A higher level language for schedule scripts (#1462)

* schedule script

* start something

* tokenize

* make a tree

* start to emit macros

* start to handle args

* handle branch targets

* cleanup a bit

* script to convert the current schedule scripts to the new language

* Add schedule compilation to Makefile

* Fix bug on compiler if the script doesn't have an extra empty line

* Allow to have `else`s without braces

* convert a lot of schedules

* door

* en_tk

* fix some checks being the wrong way around

* borkens

* door borken schedules

* kafei schedule

* postman schedule

* Implement `if_since_time_*` command

* Allow `if`s to not have an `else`

* Implement some debugging options

* fix another one from door

* D_808675D0

* door D_8086775C

* don't print else if there isn't one

* start supporting labels

* rewrite comment handling

* add branch support

* emit debugging information

* postman and one door

* the remaining scripts

* add tokens for the non _s/_l versions

* meh

* Add built schedules

* Remove _s/_l suffixes from almost every command

* TokenProperties

* Move macros and length into TokenProperties

* move short and long to TokenType

* rename member

* some cleanups

* fatalError

* Write various notes on the compiler

* more errors and comments

* debug flags

* Move the built schedules to the build folder

* manually cleanup control flow of many schedule scripts

* cleanup postman schedule

* start write up

* write more stuff

* write a little more

* Start writing about the commands

* 2 more commands

* more

* almost everything, except returns

* hopefully finish documenting the commands

* cleanup

* formal grammar

* Table of contents

* typo

* Rename schc.py

* remove todo

* Warn if a if_before_time/if_since_time is negated

* Add colors to warnings and errors

* delete rebuild schedules script

* version

* Apply suggestions from code review

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>

* suggestions on md file

* compiler review

* invented is invented

* ScheduleScript typedef

* fix

* Convert Anju's schedule to the new format

* simplify anju's schedule

* forgot to remove `_s`/`_l`

* bss

* Rework schc to allow multiple scripts per file

* Migrate all the schedules to the new format

* update language specification

* Update docs/schedule_scripting_language.md

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update docs/schedule_scripting_language.md

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

---------

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
This commit is contained in:
Anghelo Carvajal 2024-02-01 09:50:32 -03:00 committed by GitHub
parent 2c600ddd3d
commit 5db52cfd39
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
45 changed files with 3668 additions and 1466 deletions

1
.gitignore vendored
View File

@ -39,6 +39,7 @@ graphs/
tools/**/*dSYM/
tools/decomp-permuter/
tools/mips_to_c/
*.schl.inc
# Assets
*.png

View File

@ -125,6 +125,9 @@ ZAPD := tools/ZAPD/ZAPD.out
FADO := tools/fado/fado.elf
MAKEYAR := $(PYTHON) tools/buildtools/makeyar.py
CHECKSUMMER := $(PYTHON) tools/buildtools/checksummer.py
SCHC := tools/buildtools/schc.py
SCHC_FLAGS :=
OPTFLAGS := -O2 -g3
ASFLAGS := -march=vr4300 -32 -Iinclude
@ -189,6 +192,7 @@ TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG:.png=.inc.c),build/$f) \
C_FILES := $(foreach dir,$(SRC_DIRS) $(ASSET_BIN_DIRS_C_FILES),$(wildcard $(dir)/*.c))
S_FILES := $(shell grep -F "build/asm" spec | sed 's/.*build\/// ; s/\.o\".*/.s/') \
$(shell grep -F "build/data" spec | sed 's/.*build\/// ; s/\.o\".*/.s/')
SCHEDULE_FILES:= $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.schl))
BASEROM_FILES := $(shell grep -F "build/baserom" spec | sed 's/.*build\/// ; s/\.o\".*//')
ARCHIVES_O := $(shell grep -F ".yar.o" spec | sed 's/.*include "// ; s/\.o\".*/.o/')
O_FILES := $(foreach f,$(S_FILES:.s=.o),build/$f) \
@ -198,6 +202,8 @@ O_FILES := $(foreach f,$(S_FILES:.s=.o),build/$f) \
OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | grep -o '[^"]*_reloc.o' )
SCHEDULE_INC_FILES := $(foreach f,$(SCHEDULE_FILES:.schl=.schl.inc),build/$f)
# Automatic dependency files
# (Only asm_processor dependencies and reloc dependencies are handled for now)
DEP_FILES := $(O_FILES:.o=.asmproc.d) $(OVL_RELOC_FILES:.o=.d)
@ -295,7 +301,10 @@ $(OVL_RELOC_FILES): | o_files
asset_files: $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT)
$(O_FILES): | asset_files
.PHONY: o_files asset_files
schedule_inc_files: $(SCHEDULE_INC_FILES)
$(O_FILES): | schedule_inc_files
.PHONY: o_files asset_files schedule_inc_files
#### Main commands ####
@ -428,6 +437,9 @@ build/assets/%.bin.inc.c: assets/%.bin
build/assets/%.jpg.inc.c: assets/%.jpg
$(ZAPD) bren -eh -i $< -o $@
build/%.schl.inc: %.schl
$(SCHC) $(SCHC_FLAGS) -o $@ $<
-include $(DEP_FILES)
# Print target for debugging

View File

@ -0,0 +1,925 @@
# Schedule scripting language
The Schedule scripting language is a high level language that was made to help
reading and modifying the schedule scripts used by various actors.
It should be noted that the language discussed on this document was invented
and made up by the community. There's no presence of higher level abstraction
on the game ROM, neither it was used by the original development team at
Nintendo.
- [Schedule scripting language](#schedule-scripting-language)
- [Features of the schedule system](#features-of-the-schedule-system)
- [Short and long commands](#short-and-long-commands)
- [How a schedule script looks like](#how-a-schedule-script-looks-like)
- [Syntax](#syntax)
- [Compiling](#compiling)
- [Commands](#commands)
- [Generics and non-generics](#generics-and-non-generics)
- [Command arguments](#command-arguments)
- [Conditional checks](#conditional-checks)
- [`if_week_event_reg`](#if_week_event_reg)
- [`if_week_event_reg` arguments](#if_week_event_reg-arguments)
- [`if_week_event_reg` example](#if_week_event_reg-example)
- [`if_week_event_reg` non-generics](#if_week_event_reg-non-generics)
- [`if_time_range`](#if_time_range)
- [`if_time_range` arguments](#if_time_range-arguments)
- [`if_time_range` example](#if_time_range-example)
- [`if_time_range` non-generics](#if_time_range-non-generics)
- [`if_misc`](#if_misc)
- [`if_misc` arguments](#if_misc-arguments)
- [`if_misc` example](#if_misc-example)
- [`if_misc` non-generics](#if_misc-non-generics)
- [`if_scene`](#if_scene)
- [`if_scene` arguments](#if_scene-arguments)
- [`if_scene` example](#if_scene-example)
- [`if_scene` non-generics](#if_scene-non-generics)
- [`if_day`](#if_day)
- [`if_day` arguments](#if_day-arguments)
- [`if_day` example](#if_day-example)
- [`if_day` non-generics](#if_day-non-generics)
- [`if_before_time`](#if_before_time)
- [`if_before_time` arguments](#if_before_time-arguments)
- [`if_before_time` example](#if_before_time-example)
- [`if_before_time` non-generics](#if_before_time-non-generics)
- [`if_before_time` notes](#if_before_time-notes)
- [`if_since_time`](#if_since_time)
- [`if_since_time` arguments](#if_since_time-arguments)
- [`if_since_time` example](#if_since_time-example)
- [`if_since_time` non-generics](#if_since_time-non-generics)
- [`if_since_time` notes](#if_since_time-notes)
- [Unconditional branches](#unconditional-branches)
- [`branch`](#branch)
- [`branch` arguments](#branch-arguments)
- [`branch` example](#branch-example)
- [`branch` non-generics](#branch-non-generics)
- [`else`](#else)
- [`else` example](#else-example)
- [Return commands](#return-commands)
- [`return_s`](#return_s)
- [`return_s` arguments](#return_s-arguments)
- [`return_s` example](#return_s-example)
- [`return_l`](#return_l)
- [`return_l` arguments](#return_l-arguments)
- [`return_l` example](#return_l-example)
- [`return_none`](#return_none)
- [`return_none` arguments](#return_none-arguments)
- [`return_none` example](#return_none-example)
- [`return_empty`](#return_empty)
- [`return_empty` arguments](#return_empty-arguments)
- [`return_empty` example](#return_empty-example)
- [`return_time`](#return_time)
- [`return_time` arguments](#return_time-arguments)
- [`return_time` example](#return_time-example)
- [Other commands](#other-commands)
- [`nop`](#nop)
- [`nop` arguments](#nop-arguments)
- [`nop` example](#nop-example)
- [Operators](#operators)
- [`not`](#not)
- [`not` example](#not-example)
- [Labels](#labels)
- [Formal grammar](#formal-grammar)
- [Tokens](#tokens)
## Features of the schedule system
The Schedule system is a very simple scripting language, it is composed of a
series of commands that can check the state of the game and return a value
depending on said state. This system can't declare variables, hold its own
state or modify the game's state.
A schedule script can check the state of the following:
- Current in-game [day](#if_day).
- If a [WeekEventReg flag](#if_week_event_reg) is set or not.
- Current time is in a specified [time range](#if_time_range).
- Current time is [before](#if_before_time)/[after](#if_since_time) a specified
time.
- Some other [miscellaneous](#if_misc) checks (see the `ScheduleCheckMisc`
enum).
All of those checks act as conditional branches into some other command. The
schedule system also supports unconditional branches.
The schedule script is run until a return command is executed. There are various
return commands that allow different things:
- [Return none](#return_none): The schedule finished without returning a value.
- [Return empty](#return_empty): The schedule finished without changing the
previous value.
- [Return s](#return_s): The script returns a value that's 1 byte long.
- [Return l](#return_l): The script returns a value that's 2 bytes long (Note
this is bugged and will be truncated to 1 byte).
- [Return time](#return_time): Returns a time range and a 1 byte value.
Running an unknown command or branching to the middle of a command is undefined
behaviour.
A low level schedule script can be compared to a multi byte assembly language,
on which each command occupies 1 byte plus a variable number of arguments.
### Short and long commands
Due to the commands themselves using a variable amount of bytes it is possible
to do some small optimizations, like if a branch distance (which is the amount
of bytes the interpreter should skip if a check evaluates to true) can fit on a
signed byte then a **short** (noted with the `_S` suffix) command is used,
otherwise a **long** version (noted with the `_L` suffix) of the command is used
instead.
A long command uses two bytes to store the branch distance, meaning the command
itself will be one byte longer.
There are no commands that use more than 2 bytes to store the branch distance.
The short and long distinction also exists for the returned value, in case the
user wants to return a value that wouldn't fit on a single unsigned byte and
requires an unsigned short (two bytes) instead. Please note that the vanilla
built-in system interpreter has a bug on which the upper byte of a long returned
value will be discarded, so please ensure your returned values always fit on the
0-255 range.
## How a schedule script looks like
An extracted schedule script is just an array of raw data. A macroified version
looks like this:
```c
static ScheduleScript D_80BD3DB0[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x21 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x0B - 0x08),
/* 0x08 */ SCHEDULE_CMD_RET_VAL_L(1),
/* 0x0B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x20 - 0x0F),
/* 0x0F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 23, 0, 0x1D - 0x15),
/* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_HAD_MIDNIGHT_MEETING, 0x1C - 0x19),
/* 0x19 */ SCHEDULE_CMD_RET_VAL_L(1),
/* 0x1C */ SCHEDULE_CMD_RET_NONE(),
/* 0x1D */ SCHEDULE_CMD_RET_VAL_L(3),
/* 0x20 */ SCHEDULE_CMD_RET_NONE(),
/* 0x21 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_OMOYA, 0x37 - 0x25),
/* 0x25 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x36 - 0x29),
/* 0x29 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x30 - 0x2F),
/* 0x2F */ SCHEDULE_CMD_RET_NONE(),
/* 0x30 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 2),
/* 0x36 */ SCHEDULE_CMD_RET_NONE(),
/* 0x37 */ SCHEDULE_CMD_RET_NONE(),
};
```
Having these scripts as arrays like this has two major flaws:
- The control flow is not clear at a first glance (this is especially problematic
for larger scripts).
- The branch distances are hardcoded into each command, making the script itself
hard to modify.
As a solution, the high level Schedule script language uses a C-like syntax to
better represent the control flow. The above script can be written as the
following:
```c
D_80BD3DB0 {
if_scene (SCENE_YADOYA) {
if_day (3) {
return_l (1)
} else if_day (2) {
if_time_range (21, 0, 23, 0) {
return_l (3)
} else if_week_event_reg (WEEKEVENTREG_HAD_MIDNIGHT_MEETING) {
return_none
} else {
return_l (1)
}
} else {
return_none
}
} else if_scene (SCENE_OMOYA) {
if_day (3) {
if_time_range (18, 0, 6, 0) {
return_time (18, 0, 6, 0, 2)
} else {
return_none
}
} else {
return_none
}
} else {
return_none
}
}
```
## Syntax
The syntax is simple, it consists on the name of the schedule script followed
by a succession of commands. Some commands require arguments (by using
parentheses) and some (conditional checks) can have bodies with subcommands and
an optional `else` with its corresponding body with subcommands.
Like in C, both whitespace and newlines are not part of the language and they
get ignored during compilation. At the same time, this language accepts both C
and C++ styles of comments, known as block comments (`/**/`) and line comments
(`//`).
Each top-level schedule script consists on its name, followed by a list of
commands delimited by braces (`{` and `}`). A schedule script must always have
at least one command on its body.
A command's body is delimited by braces (`{` and `}`). A body must follow either
a [conditional check](#conditional-checks) command or an `else`, meaning
top-level bodies are not allowed. At the same time a conditional check must be
followed by a body. An `else` must be followed by either a body or another
conditional check command.
Even if this language's syntax is inspired by C, there are a few key differences:
- Commands are not separated by semicolons (`;`). Instead whitespace is used as
separation.
- Instead of having a single `if` conditional of which its parameters should
evaluate to non-zero, this language uses
[conditional checks](#conditional-checks). These are commands that receive
parameters and have a body with parameters that would be executed if the
command itself evaluated to true. This commands may be followed by an `else`,
which has its own body.
- There's no concept of functions, variables, loops, scopes, etc.
- Each schedule script could be seen as a function itself, but said script
can't "call" another scripts.
## Compiling
Compiling a high level schedule script should produce an array for each script
in the file. Each array should contain a series of macros that can be
`#include`d by a C preprocessor, like in the following example:
File: `build/src/overlays/actors/ovl_En_Ah/scheduleScripts.schl.inc`
```c
static ScheduleScript D_80BD3DB0[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x21 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x0B - 0x08),
/* 0x08 */ SCHEDULE_CMD_RET_VAL_L(1),
/* 0x0B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x20 - 0x0F),
/* 0x0F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 23, 0, 0x1D - 0x15),
/* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_HAD_MIDNIGHT_MEETING, 0x1C - 0x19),
/* 0x19 */ SCHEDULE_CMD_RET_VAL_L(1),
/* 0x1C */ SCHEDULE_CMD_RET_NONE(),
/* 0x1D */ SCHEDULE_CMD_RET_VAL_L(3),
/* 0x20 */ SCHEDULE_CMD_RET_NONE(),
/* 0x21 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_OMOYA, 0x37 - 0x25),
/* 0x25 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x36 - 0x29),
/* 0x29 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x30 - 0x2F),
/* 0x2F */ SCHEDULE_CMD_RET_NONE(),
/* 0x30 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 2),
/* 0x36 */ SCHEDULE_CMD_RET_NONE(),
/* 0x37 */ SCHEDULE_CMD_RET_NONE(),
};
```
In the actor's C code:
```c
#include "build/src/overlays/actors/ovl_En_Ah/scheduleScripts.schl.inc"
```
## Commands
Commands are the fundamental (and almost only) building block of this language.
A schedule script file must always contain at least one script, and a schedule
script must always have at least one command. It's undefined behaviour if the
script's control flow doesn't always lead to a return command.
To see how the command arguments work, please see the
[corresponding section](#command-arguments).
Commands can be categorized in 4 major types:
[Conditional checks](#conditional-checks),
[unconditional branches](#unconditional-branches),
[return commands](#return-commands) and
[other commands](#other-commands).
### Generics and non-generics
Schedule scripts use both [short and long commands](#short-and-long-commands)
for most of the [conditional checks](#conditional-checks) and
[unconditional branches](#unconditional-branches) commands, making it optimal
space-wise, but terrible to worry about when actually writing a schedule script
from the user's point of view.
Due to this, this high level language allows for generic versions of those
commands (a.k.a. suffix-less versions) that allow not having to worry about how
many commands the body of a check has (and the byte length of them).
The rest of this section will mostly refer to the generic versions of the
commands. The non-generic versions of each command are available to be used too,
but their use is not recommended.
### Command arguments
Some commands require arguments. Arguments are used by checking commands to
check something specific of the state of the game (what's the current day? what's
the current scene? etc.) and take a decision based on it (branch to another
command).
Arguments are enclosed in parentheses (`(` and `)`) and passed verbatim to the
generated output, allowing a compiler for this language to not need to recognize
any identifier used in arguments, allowing to use any custom identifier
(specially useful for schedule result enums). Note this behaviour may
change in a future version of the language.
### Conditional checks
Conditional checks commands are commands that take a decision based on
the state of the game, allowing it to decide which set of subcommands to
execute.
All conditional checks require an argument and a body of subcommands. A
conditional check can optionally be followed by an `else`.
If the condition of a command is not satisfied and that command has
an `else`, then control jumps to the body of that `else`. If
there's no `else` and the condition isn't satisfied then control just
falls through into the next command.
#### `if_week_event_reg`
Checks if the passed WeekEventReg flag is set, and execute the body of the
command if it is set.
##### `if_week_event_reg` arguments
- Argument 0: A WeekEventReg flag. `WEEKEVENTREG_` macros are preferred.
##### `if_week_event_reg` example
```c
if_week_event_reg (WEEKEVENTREG_61_02) {
return_s (31)
}
return_s (30)
```
##### `if_week_event_reg` non-generics
`if_week_event_reg_s` and `if_week_event_reg_l`
#### `if_time_range`
Checks if the current time is between the passed time range.
##### `if_time_range` arguments
- Argument 0: Hour component of the start time
- Argument 1: Minute component of the start time
- Argument 2: Hour component of the end time
- Argument 3: Minute component of the end time
##### `if_time_range` example
```c
// Checks if the current time is between 18:00 ~ 6:00
if_time_range (18, 0, 6, 0) {
return_time (18, 0, 6, 0, 2)
} else {
return_none
}
```
##### `if_time_range` non-generics
`if_time_range_s` and `if_time_range_l`
#### `if_misc`
Checks if the passed miscellaneous argument is true.
##### `if_misc` arguments
- Argument 0: A value of the `ScheduleCheckMisc` enum.
##### `if_misc` example
```c
if_misc (SCHEDULE_CHECK_MISC_MASK_ROMANI) {
return_s (33)
} else {
return_s (34)
}
```
##### `if_misc` non-generics
`if_misc_s`. Note there's no long version of this command. It is advised to
minimize the amount of commands used on a `ìf_misc` body and `else`'s body.
#### `if_scene`
Checks if the current scene matches the one passed as argument.
##### `if_scene` arguments
- Argument 0: A value of the `SceneId` enum.
##### `if_scene` example
```c
if_scene (SCENE_SECOM) {
return_s (7)
}
```
##### `if_scene` non-generics
`if_scene_s` and `if_scene_l`
#### `if_day`
Checks if the current day matches the passed argument.
##### `if_day` arguments
- Argument 0: The day to check. For example, passing `1` will check for day 1.
##### `if_day` example
```c
if_day (3) {
return_l (1)
}
```
##### `if_day` non-generics
`if_day_s` and `if_day_l`
#### `if_before_time`
Checks if the current time is before the time passed as argument.
##### `if_before_time` arguments
- Argument 0: The hour component of the time.
- Argument 1: The minute component of the time.
##### `if_before_time` example
```c
if_before_time (8, 0) {
return_s (19)
} else {
return_none
}
```
##### `if_before_time` non-generics
`if_before_time_s` and `if_before_time_l`
##### `if_before_time` notes
This command performs the opposite check of `if_since_time`.
#### `if_since_time`
Checks if the current time is after or equal to the time passed as argument.
##### `if_since_time` arguments
- Argument 0: The hour component of the time.
- Argument 1: The minute component of the time.
##### `if_since_time` example
```c
if_since_time (13, 0) {
return_s (9)
} else {
return_none
}
```
##### `if_since_time` non-generics
`if_since_time_s` and `if_since_time_l`
##### `if_since_time` notes
This command performs the contrary check to `if_before_time`.
### Unconditional branches
Unconditional branches are basically the equivalent of C's `goto`s. They require
a [label](#labels) to know where to branch to.
#### `branch`
Unconditionally transfer control to the passed label.
##### `branch` arguments
- Argument 0: The label to branch to.
##### `branch` example
```c
if_day (3) {
if_since_time (10, 0) {
label_0x8:
return_none
} else {
branch (label_0xF)
}
} else {
if_time_range (10, 0, 20, 0) {
branch (label_0x8)
} else {
label_0xF:
return_s (21)
}
}
```
##### `branch` non-generics
`branch_s` and `branch_l`
### `else`
An `else` signals which commands should be executed in case a
[conditional check](#conditional-checks) does not evaluates to true. The `else`
signals this by either having those instructions inside its own body (marked by
braces) or by not having those braces but being immediately followed by another
conditional check command, similar to C's `else if`.
#### `else` example
The following two scripts are equivalent:
```c
if_time_range (9, 50, 18, 1) {
return_time (9, 50, 18, 1, 1)
} else {
if_time_range (18, 0, 6, 0) {
return_time (18, 0, 6, 0, 2)
} else {
return_l (0)
}
}
```
```c
if_time_range (9, 50, 18, 1) {
return_time (9, 50, 18, 1, 1)
} else if_time_range (18, 0, 6, 0) {
return_time (18, 0, 6, 0, 2)
} else {
return_l (0)
}
```
### Return commands
A return command signals the end of the script and halts its execution.
A return command allows to optionally return a value and/or a time range to the
calling actor so it can change behavior accordingly.
A schedule script with a control flow that leads to no return command is
undefined behaviour.
#### `return_s`
Allows to return a short (one byte) value.
##### `return_s` arguments
- Argument 0: The value to return. It must fit in a `u8`.
##### `return_s` example
```c
if_time_range (8, 0, 12, 0) {
return_s (EN_NB_SCH_1)
}
```
#### `return_l`
Allows to return a long (two bytes) value.
Please note that the vanilla interpreter for the schedule scripts has a bug on
which the upper byte of a long returned value will be discarded (will be
truncated to a `u8`), so please ensure your returned values always fit in the
0-255 range.
##### `return_l` arguments
- Argument 0: The value to return. It must fit in a `u16`.
##### `return_l` example
```c
if_scene (SCENE_TOWN) {
return_l (1)
} else {
return_none
}
```
#### `return_none`
The schedule finished without returning a value. The internal `hasResult`
member of the `ScheduleOutput` struct will be set to `false`.
##### `return_none` arguments
No arguments.
##### `return_none` example
```c
if_week_event_reg (WEEKEVENTREG_HAD_MIDNIGHT_MEETING) {
return_none
}
```
#### `return_empty`
The schedule finished without changing the previous value. The internal `hasResult`
member of the `ScheduleOutput` struct will be set to `true`.
##### `return_empty` arguments
No arguments.
##### `return_empty` example
```c
if_time_range (15, 50, 16, 15) {
return_empty
}
```
#### `return_time`
Returns a time range and a 1 byte value.
##### `return_time` arguments
- Argument 0: Hour component of the start time
- Argument 1: Minute component of the start time
- Argument 2: Hour component of the end time
- Argument 3: Minute component of the end time
- Argument 4: A value to return. It must fit in a `u8`
##### `return_time` example
```c
if_time_range (0, 0, 6, 0) {
return_time (0, 0, 6, 0, TOILET_HAND_SCH_AVAILABLE)
} else {
return_none
}
```
### Other commands
#### `nop`
No operation. Doesn't perform an action or a check.
##### `nop` arguments
- Argument 0: Unknown meaning.
- Argument 1: Unknown meaning.
- Argument 2: Unknown meaning.
##### `nop` example
```c
nop (0, 1, 2)
```
### Operators
Operators can be applied to some commands.
Currently only one operator is allowed on the language, the [`not`](#not) operator.
#### `not`
A `not` is a special kind of command that doesn't get compiled into the actual
low level script, instead it changes the meaning of the check that's right next
to it by inverting the logic of the check. In other words, the subcommands of a
conditional check command will be executed if the check of said command
evaluates to false instead of true.
A `not` must always be followed by a [conditional check command](#conditional-checks).
##### `not` example
The following two scripts are equivalent:
```c
if_week_event_reg (WEEKEVENTREG_51_08) {
if_since_time (22, 0) {
return_s (12)
} else {
return_none
}
} else {
return_s (12)
}
```
```c
not if_week_event_reg (WEEKEVENTREG_51_08) {
return_s (12)
} else {
if_since_time (22, 0) {
return_s (12)
} else {
return_none
}
}
```
### Labels
A label is a special kind of command that doesn't get compiled into the actual
low level script, instead it is used as a marker to be used for
[`branch`es](#branch).
A label is defined as an alphanumeric identifier (a to z, digits and
underscores) followed by a colon (`:`). The colon is not considered part of the
label's name.
A label must always be followed by another command that isn't another label.
## Formal grammar
This section presents the formal grammar for the Schedule scripting language.
```yac
<scriptFile> : <functionList>
;
<functionList> : <functionScript>
| <functionList> <functionScript>
;
<functionScript> : IDENTIFIER '{' <cmdList> '}'
;
<cmdList> : <labeledCmd>
| <cmdList> <labeledCmd>
;
<labeledCmd> : <command>
| IDENTIFIER ':' <command>
;
<command> : <conditionalCmd>
| <unconditionalCmd>
| <returnCmd>
| <miscCmd>
;
<conditionalCmd> : <conditionalExprBody> <else>
| <conditionalExprBody>
;
<unconditionalCmd> : <tokenBranch> <args>
;
<returnCmd> : RETURN_S <args>
| RETURN_L <args>
| RETURN_NONE
| RETURN_EMPTY
| RETURN_TIME <args>
;
<miscCmd> : NOP <args>
;
<conditionalExprBody> : NOT <conditionalExpr> <body>
| <conditionalExpr> <body>
;
<conditionalExpr> : <tokenIfWeekEventReg> <args>
| <tokenIfTimeRange> <args>
| <tokenIfMisc> <args>
| <tokenIfScene> <args>
| <tokenIfDay> <args>
| <tokenIfBeforeTime> <args>
| <tokenIfSinceTime> <args>
;
<else> : ELSE <body>
| ELSE <conditionalCmd>
;
<tokenIfWeekEventReg> : IF_WEEK_EVENT_REG
| IF_WEEK_EVENT_REG_S
| IF_WEEK_EVENT_REG_L
;
<tokenIfTimeRange> : IF_TIME_RANGE
| IF_TIME_RANGE_S
| IF_TIME_RANGE_L
;
<tokenIfMisc> : IF_MISC
| IF_MISC_S
;
<tokenIfScene> : IF_SCENE
| IF_SCENE_S
| IF_SCENE_L
;
<tokenIfDay> : IF_DAY
| IF_DAY_S
| IF_DAY_L
;
<tokenIfBeforeTime> : IF_BEFORE_TIME
| IF_BEFORE_TIME_S
| IF_BEFORE_TIME_L
;
<tokenIfSinceTime> : IF_SINCE_TIME
| IF_SINCE_TIME_S
| IF_SINCE_TIME_L
;
<tokenBranch> : BRANCH
| BRANCH_S
| BRANCH_L
;
<body> : '{' '}'
| '{' <cmdList> '}'
;
<args> : '(' ')'
| '(' <args_list> ')'
;
<args_list> : <arg_elem>
| <args_list> ',' <arg_elem>
;
<arg_elem> : NO_PARENTHESIS
| <args>
;
```
### Tokens
The presented grammar expects a few tokens.
First column is the corresponding token and right is a regular expression to
match said token.
```regex
IDENTIFIER [a-zA-Z0-9_]+
IF_WEEK_EVENT_REG if_week_event_reg
IF_WEEK_EVENT_REG_S if_week_event_reg_s
IF_WEEK_EVENT_REG_L if_week_event_reg_l
IF_TIME_RANGE if_time_range
IF_TIME_RANGE_S if_time_range_s
IF_TIME_RANGE_L if_time_range_l
IF_MISC if_misc
IF_MISC_S if_misc_s
IF_SCENE if_scene
IF_SCENE_S if_scene_s
IF_SCENE_L if_scene_l
IF_DAY if_day
IF_DAY_S if_day_s
IF_DAY_L if_day_l
IF_BEFORE_TIME if_before_time
IF_BEFORE_TIME_S if_before_time_s
IF_BEFORE_TIME_L if_before_time_l
IF_SINCE_TIME if_since_time
IF_SINCE_TIME_S if_since_time_s
IF_SINCE_TIME_L if_since_time_l
BRANCH branch
BRANCH_S branch_s
BRANCH_L branch_l
RETURN_S return_s
RETURN_L return_l
RETURN_NONE return_none
RETURN_EMPTY return_empty
RETURN_TIME return_time
NOP nop
ELSE else
NOT not
NO_PARENTHESIS [^\(\)]+
```

View File

@ -181,6 +181,7 @@ def main():
else:
files = glob.glob("src/**/*.c", recursive=True)
extra_files = glob.glob("assets/**/*.xml", recursive=True)
extra_files += glob.glob("src/**/*.schl", recursive=True)
format_files(files, extra_files, nb_jobs)

View File

@ -518,8 +518,6 @@ void Inventory_IncrementSkullTokenCount(s16 sceneIndex);
s16 Inventory_GetSkullTokenCount(s16 sceneIndex);
void Inventory_SaveLotteryCodeGuess(PlayState* play);
s32 Schedule_RunScript(PlayState* play, u8* script, ScheduleOutput* output);
uintptr_t KaleidoManager_FaultAddrConv(uintptr_t address, void* param);
void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl);
void KaleidoManager_ClearOvl(KaleidoMgrOverlay* ovl);

View File

@ -37,6 +37,7 @@ extern ObjectId gObjectTableSize;
extern RomFile gObjectTable[OBJECT_ID_MAX];
extern SceneTableEntry gSceneTable[SCENE_MAX];
extern KaleidoMgrOverlay gKaleidoMgrOverlayTable[2];
extern KaleidoMgrOverlay* gKaleidoMgrCurOvl;

View File

@ -27,6 +27,8 @@
* - HandleSchedule: Holds the actual logic of how to actually follow the schedule based on the processed output, called by FollowSchedule
*/
struct PlayState;
// Macro to convert the time format used in the save struct into the format used in Schedule
#define SCHEDULE_CONVERT_TIME(time) ((s32)((time) - 0x10000 / 360 * 90))
@ -256,4 +258,8 @@ typedef struct {
#define SCHEDULE_CMD_BRANCH_L(offset) \
SCHEDULE_CMD_ID_BRANCH_L, SCHEDULE_PACK_S16(offset)
typedef u8 ScheduleScript;
s32 Schedule_RunScript(struct PlayState* play, ScheduleScript* script, ScheduleOutput* output);
#endif

View File

@ -285,7 +285,7 @@ static u8 sScheduleCmdSizes[] = {
sizeof(ScheduleCmdBranchL), // SCHEDULE_CMD_ID_BRANCH_L
};
s32 Schedule_RunScript(PlayState* play, u8* script, ScheduleOutput* output) {
s32 Schedule_RunScript(PlayState* play, ScheduleScript* script, ScheduleOutput* output) {
u8 size;
s32 stop;

View File

@ -0,0 +1,29 @@
D_80BD3DB0 {
if_scene (SCENE_YADOYA) {
if_day (3) {
return_l (1)
} else if_day (2) {
if_time_range (21, 0, 23, 0) {
return_l (3)
} else if_week_event_reg (WEEKEVENTREG_HAD_MIDNIGHT_MEETING) {
return_none
} else {
return_l (1)
}
} else {
return_none
}
} else if_scene (SCENE_OMOYA) {
if_day (3) {
if_time_range (18, 0, 6, 0) {
return_time (18, 0, 6, 0, 2)
} else {
return_none
}
} else {
return_none
}
} else {
return_none
}
}

View File

@ -18,25 +18,7 @@ void EnAh_Draw(Actor* thisx, PlayState* play);
void func_80BD3768(EnAh* this, PlayState* play);
static u8 D_80BD3DB0[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x21 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x0B - 0x08),
/* 0x08 */ SCHEDULE_CMD_RET_VAL_L(1),
/* 0x0B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x20 - 0x0F),
/* 0x0F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 23, 0, 0x1D - 0x15),
/* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_HAD_MIDNIGHT_MEETING, 0x1C - 0x19),
/* 0x19 */ SCHEDULE_CMD_RET_VAL_L(1),
/* 0x1C */ SCHEDULE_CMD_RET_NONE(),
/* 0x1D */ SCHEDULE_CMD_RET_VAL_L(3),
/* 0x20 */ SCHEDULE_CMD_RET_NONE(),
/* 0x21 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_OMOYA, 0x37 - 0x25),
/* 0x25 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x36 - 0x29),
/* 0x29 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x30 - 0x2F),
/* 0x2F */ SCHEDULE_CMD_RET_NONE(),
/* 0x30 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 2),
/* 0x36 */ SCHEDULE_CMD_RET_NONE(),
/* 0x37 */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Ah/scheduleScripts.schl.inc"
s32 D_80BD3DE8[] = { 0x0E28FF0C, 0x10000000 };

View File

@ -0,0 +1,25 @@
D_80BDFC70 {
if_day (3) {
if_time_range (18, 0, 6, 0) {
return_time (18, 0, 6, 0, 2)
} else {
return_none
}
} else {
if_time_range (8, 0, 10, 0) {
return_l (1)
} else if_time_range (10, 0, 10, 55) {
return_time (10, 0, 10, 55, 1)
} else if_time_range (10, 55, 11, 45) {
if_day (2) {
return_time (10, 55, 11, 45, 1)
} else {
return_time (10, 55, 11, 45, 3)
}
} else if_time_range (11, 45, 20, 0) {
return_time (11, 45, 20, 0, 1)
} else {
return_none
}
}
}

View File

@ -17,23 +17,7 @@ void EnAl_Draw(Actor* thisx, PlayState* play);
void func_80BDF6C4(EnAl* this, PlayState* play);
static u8 D_80BDFC70[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x11 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x0B - 0x0A),
/* 0x0A */ SCHEDULE_CMD_RET_NONE(),
/* 0x0B */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 2),
/* 0x11 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(8, 0, 10, 0, 0x46 - 0x17),
/* 0x17 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 10, 55, 0x40 - 0x1D),
/* 0x1D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 55, 11, 45, 0x30 - 0x23),
/* 0x23 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 45, 20, 0, 0x2A - 0x29),
/* 0x29 */ SCHEDULE_CMD_RET_NONE(),
/* 0x2A */ SCHEDULE_CMD_RET_TIME(11, 45, 20, 0, 1),
/* 0x30 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x3A - 0x34),
/* 0x34 */ SCHEDULE_CMD_RET_TIME(10, 55, 11, 45, 1),
/* 0x3A */ SCHEDULE_CMD_RET_TIME(10, 55, 11, 45, 3),
/* 0x40 */ SCHEDULE_CMD_RET_TIME(10, 0, 10, 55, 1),
/* 0x46 */ SCHEDULE_CMD_RET_VAL_L(1),
};
#include "build/src/overlays/actors/ovl_En_Al/scheduleScripts.schl.inc"
s32 D_80BDFCBC[] = {
0x09000017, 0x0E27A50C, 0x09000018, 0x0E27A60C, 0x09000017, 0x0E27A70C, 0x09000018, 0x0E27A80C,

View File

@ -0,0 +1,233 @@
sScheduleScript {
if_day (1) {
if_scene (SCENE_YADOYA) {
if_time_range (6, 0, 10, 55) {
return_time (6, 0, 10, 55, ANJU_SCH_RECEPTIONIST_IDLE)
} else if_time_range (10, 55, 11, 10) {
return_time (10, 55, 11, 10, ANJU_SCH_WALKING_40)
} else if_time_range (11, 10, 11, 30) {
return_time (11, 10, 11, 30, ANJU_SCH_COOKING)
} else if_time_range (11, 30, 11, 50) {
return_time (11, 30, 11, 50, ANJU_SCH_WALKING_42)
} else if_time_range (11, 50, 11, 55) {
return_time (11, 50, 11, 55, ANJU_SCH_DOOR_26)
} else if_time_range (11, 55, 12, 0) {
return_time (11, 55, 12, 0, ANJU_SCH_WALKING_43)
} else if_time_range (12, 0, 12, 15) {
return_time (12, 0, 12, 15, ANJU_SCH_GIVE_LUNCH_TO_GRANNY)
} else if_time_range (12, 15, 12, 20) {
return_time (12, 15, 12, 20, ANJU_SCH_WALKING_44)
} else if_time_range (12, 20, 12, 25) {
return_time (12, 20, 12, 25, ANJU_SCH_DOOR_27)
} else if_time_range (12, 25, 12, 55) {
return_time (12, 25, 12, 55, ANJU_SCH_WALKING_45)
} else if_time_range (12, 55, 13, 0) {
return_time (12, 55, 13, 0, ANJU_SCH_DOOR_28)
} else if_time_range (13, 15, 13, 20) {
return_time (13, 15, 13, 20, ANJU_SCH_DOOR_29)
} else if_time_range (13, 20, 13, 50) {
return_time (13, 20, 13, 50, ANJU_SCH_WALKING_46)
} else if_time_range (13, 50, 14, 8) {
return_time (13, 50, 14, 8, ANJU_SCH_RECEPTIONIST_IDLE)
} else if_time_range (14, 8, 14, 18) {
return_time (14, 8, 14, 18, ANJU_SCH_RECEIVE_LETTER_FROM_POSTMAN)
} else if_time_range (14, 18, 16, 10) {
return_time (14, 18, 16, 10, ANJU_SCH_RECEPTIONIST_IDLE)
} else if_time_range (16, 10, 16, 30) {
return_time (16, 10, 16, 30, ANJU_SCH_ATTEND_GORON)
} else if_time_range (16, 30, 19, 50) {
return_time (16, 30, 19, 50, ANJU_SCH_RECEPTIONIST_IDLE)
} else if_time_range (19, 50, 20, 20) {
return_time (19, 50, 20, 20, ANJU_SCH_WALKING_47)
} else if_time_range (20, 20, 20, 30) {
return_time (20, 20, 20, 30, ANJU_SCH_WAITING_CLOSING_TIME)
} else if_time_range (20, 30, 21, 5) {
return_time (20, 30, 21, 5, ANJU_SCH_WALKING_48)
} else if_time_range (21, 5, 21, 10) {
return_time (21, 5, 21, 10, ANJU_SCH_DOOR_30)
} else if_week_event_reg (WEEKEVENTREG_PROMISED_MIDNIGHT_MEETING) {
if_time_range (23, 10, 23, 15) {
return_time (23, 10, 23, 15, ANJU_SCH_DOOR_31)
} else if_time_range (23, 15, 0, 0) {
return_time (23, 15, 0, 0, ANJU_SCH_WALKING_49)
} else if_time_range (0, 0, 6, 0) {
if_week_event_reg (WEEKEVENTREG_HAD_MIDNIGHT_MEETING) {
return_none
} else {
return_time (0, 0, 6, 0, ANJU_SCH_MIDNIGHT_MEETING)
}
} else {
return_none
}
} else {
return_none
}
} else {
return_none
}
} else if_day (2) {
if_week_event_reg (WEEKEVENTREG_HAD_MIDNIGHT_MEETING) {
if_scene (SCENE_YADOYA) {
if_time_range (6, 0, 10, 55) {
return_time (6, 0, 10, 55, ANJU_SCH_RECEPTIONIST_IDLE)
} else if_time_range (10, 55, 11, 10) {
return_time (10, 55, 11, 10, ANJU_SCH_WALKING_40)
} else if_time_range (11, 10, 11, 30) {
return_time (11, 10, 11, 30, ANJU_SCH_COOKING)
} else if_time_range (11, 30, 11, 50) {
return_time (11, 30, 11, 50, ANJU_SCH_WALKING_42)
} else if_time_range (11, 50, 11, 55) {
return_time (11, 50, 11, 55, ANJU_SCH_DOOR_26)
} else if_time_range (11, 55, 12, 0) {
return_time (11, 55, 12, 0, ANJU_SCH_WALKING_43)
} else if_time_range (12, 0, 12, 15) {
return_time (12, 0, 12, 15, ANJU_SCH_GIVE_LUNCH_TO_GRANNY)
} else if_time_range (12, 15, 12, 20) {
return_time (12, 15, 12, 20, ANJU_SCH_WALKING_44)
} else if_time_range (12, 20, 12, 25) {
return_time (12, 20, 12, 25, ANJU_SCH_DOOR_27)
} else if_time_range (12, 25, 12, 55) {
return_time (12, 25, 12, 55, ANJU_SCH_WALKING_45)
} else if_time_range (12, 55, 13, 0) {
return_time (12, 55, 13, 0, ANJU_SCH_DOOR_28)
} else if_time_range (13, 15, 13, 20) {
return_time (13, 15, 13, 20, ANJU_SCH_DOOR_29)
} else if_time_range (13, 20, 13, 50) {
return_time (13, 20, 13, 50, ANJU_SCH_WALKING_46)
} else if_time_range (13, 50, 19, 50) {
return_time (13, 50, 19, 50, ANJU_SCH_RECEPTIONIST_IDLE)
} else if_time_range (19, 50, 20, 20) {
return_time (19, 50, 20, 20, ANJU_SCH_WALKING_47)
} else if_time_range (20, 20, 20, 30) {
return_time (20, 20, 20, 30, ANJU_SCH_WAITING_CLOSING_TIME)
} else if_time_range (20, 30, 21, 5) {
return_time (20, 30, 21, 5, ANJU_SCH_WALKING_48)
} else if_time_range (21, 5, 21, 10) {
return_time (21, 5, 21, 10, ANJU_SCH_DOOR_30)
} else if_time_range (21, 30, 23, 0) {
return_time (21, 30, 23, 0, ANJU_SCH_TALKING_WITH_MOM)
} else {
return_none
}
} else {
return_none
}
} else if_scene (SCENE_YADOYA) {
if_time_range (11, 3, 11, 9) {
return_time (11, 3, 11, 9, ANJU_SCH_DOOR_32)
} else if_time_range (11, 9, 11, 29) {
return_time (11, 9, 11, 29, ANJU_SCH_WALKING_50)
} else if_time_range (11, 29, 11, 39) {
return_time (11, 29, 11, 39, ANJU_SCH_DOOR_33)
} else if_time_range (17, 24, 17, 30) {
return_time (17, 24, 17, 30, ANJU_SCH_DOOR_34)
} else if_time_range (17, 30, 17, 55) {
return_time (17, 30, 17, 55, ANJU_SCH_WALKING_51)
} else if_time_range (17, 55, 18, 0) {
return_time (17, 55, 18, 0, ANJU_SCH_DOOR_35)
} else if_time_range (18, 0, 19, 50) {
return_time (18, 0, 19, 50, ANJU_SCH_RECEPTIONIST_IDLE)
} else if_time_range (19, 50, 20, 20) {
return_time (19, 50, 20, 20, ANJU_SCH_WALKING_47)
} else if_time_range (20, 20, 20, 30) {
return_time (20, 20, 20, 30, ANJU_SCH_WAITING_CLOSING_TIME)
} else if_time_range (20, 30, 21, 0) {
return_time (20, 30, 21, 0, ANJU_SCH_WALKING_48)
} else if_time_range (21, 0, 21, 5) {
return_time (21, 0, 21, 5, ANJU_SCH_DOOR_30)
} else if_time_range (21, 30, 23, 0) {
return_time (21, 30, 23, 0, ANJU_SCH_TALKING_WITH_MOM)
} else {
return_none
}
} else if_scene (SCENE_TOWN) {
if_time_range (11, 29, 11, 39) {
return_time (11, 29, 11, 39, ANJU_SCH_DOOR_37)
} else if_time_range (11, 39, 12, 25) {
return_time (11, 39, 12, 25, ANJU_SCH_WALKING_54)
} else if_time_range (12, 25, 13, 15) {
return_time (12, 25, 13, 15, ANJU_SCH_WALKING_55)
} else if_time_range (15, 55, 16, 45) {
return_time (15, 55, 16, 45, ANJU_SCH_WALKING_58)
} else if_time_range (16, 45, 17, 24) {
return_time (16, 45, 17, 24, ANJU_SCH_WALKING_59)
} else if_time_range (17, 24, 17, 30) {
return_time (17, 24, 17, 30, ANJU_SCH_DOOR_38)
} else {
return_none
}
} else if_scene (SCENE_CLOCKTOWER) {
if_time_range (11, 39, 12, 25) {
return_time (11, 39, 12, 25, ANJU_SCH_WALKING_60)
} else if_time_range (12, 25, 13, 15) {
return_time (12, 25, 13, 15, ANJU_SCH_WALKING_61)
} else if_time_range (15, 55, 16, 45) {
return_time (15, 55, 16, 45, ANJU_SCH_WALKING_62)
} else if_time_range (16, 45, 17, 24) {
return_time (16, 45, 17, 24, ANJU_SCH_WALKING_63)
} else {
return_none
}
} else if_scene (SCENE_ALLEY) {
if_time_range (13, 15, 13, 45) {
return_time (13, 15, 13, 45, ANJU_SCH_WALKING_56)
} else if_time_range (13, 45, 15, 25) {
return_time (13, 45, 15, 25, ANJU_SCH_LAUNDRY_POOL_SIT)
} else if_time_range (15, 25, 15, 55) {
return_time (15, 25, 15, 55, ANJU_SCH_WALKING_57)
} else {
return_none
}
} else {
return_none
}
} else if_day (3) {
if_week_event_reg (WEEKEVENTREG_DELIVERED_PENDANT_OF_MEMORIES) {
if_scene (SCENE_YADOYA) {
if_time_range (6, 0, 11, 0) {
return_time (6, 0, 11, 0, ANJU_SCH_SWEEPING)
} else if_time_range (11, 0, 11, 25) {
return_time (11, 0, 11, 25, ANJU_SCH_WALKING_52)
} else if_time_range (11, 25, 11, 30) {
return_time (11, 25, 11, 30, ANJU_SCH_DOOR_36)
} else if_time_range (11, 30, 11, 50) {
return_time (11, 30, 11, 50, ANJU_SCH_WALKING_53)
} else if_time_range (11, 50, 12, 0) {
return_time (11, 50, 12, 0, ANJU_SCH_DOOR_39)
} else if_time_range (18, 0, 5, 0) {
return_time (18, 0, 5, 0, ANJU_SCH_WAITING_FOR_KAFEI)
} else if_time_range (5, 0, 6, 0) {
return_time (5, 0, 6, 0, ANJU_SCH_WAITING_FOR_KAFEI)
} else {
return_none
}
} else {
return_none
}
} else if_scene (SCENE_YADOYA) {
if_time_range (6, 0, 11, 0) {
return_time (6, 0, 11, 0, ANJU_SCH_SWEEPING)
} else if_time_range (11, 0, 11, 25) {
return_time (11, 0, 11, 25, ANJU_SCH_WALKING_52)
} else if_time_range (11, 25, 11, 30) {
return_time (11, 25, 11, 30, ANJU_SCH_DOOR_36)
} else if_time_range (11, 30, 11, 50) {
return_time (11, 30, 11, 50, ANJU_SCH_WALKING_53)
} else if_time_range (11, 50, 12, 0) {
return_time (11, 50, 12, 0, ANJU_SCH_DOOR_39)
} else {
return_none
}
} else if_scene (SCENE_OMOYA) {
if_time_range (18, 0, 6, 0) {
return_time (18, 0, 6, 0, ANJU_SCH_RANCH)
} else {
return_none
}
} else {
return_none
}
} else {
return_none
}
}

View File

@ -158,442 +158,7 @@ typedef enum AnjuScheduleResult {
/* 64 */ ANJU_SCH_MAX
} AnjuScheduleResult;
static u8 sScheduleScript[] = {
/* 0x000 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(1, 0x151 - 0x005),
/* 0x005 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_L(SCENE_YADOYA, 0x150 - 0x00A),
/* 0x00A */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(6, 0, 10, 55, 0x14A - 0x011),
/* 0x011 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(10, 55, 11, 10, 0x144 - 0x018),
/* 0x018 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(11, 10, 11, 30, 0x13E - 0x01F),
/* 0x01F */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(11, 30, 11, 50, 0x138 - 0x026),
/* 0x026 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(11, 50, 11, 55, 0x132 - 0x02D),
/* 0x02D */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(11, 55, 12, 0, 0x12C - 0x034),
/* 0x034 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 12, 15, 0x126 - 0x03B),
/* 0x03B */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 15, 12, 20, 0x120 - 0x042),
/* 0x042 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 20, 12, 25, 0x11A - 0x049),
/* 0x049 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 25, 12, 55, 0x114 - 0x050),
/* 0x050 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 55, 13, 0, 0x10E - 0x057),
/* 0x057 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(13, 15, 13, 20, 0x108 - 0x05E),
/* 0x05E */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(13, 20, 13, 50, 0x102 - 0x065),
/* 0x065 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(13, 50, 14, 8, 0x0FC - 0x06C),
/* 0x06C */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(14, 8, 14, 18, 0x0F6 - 0x073),
/* 0x073 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 18, 16, 10, 0x0F0 - 0x079),
/* 0x079 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 10, 16, 30, 0x0EA - 0x07F),
/* 0x07F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 30, 19, 50, 0x0E4 - 0x085),
/* 0x085 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(19, 50, 20, 20, 0x0DE - 0x08B),
/* 0x08B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(20, 20, 20, 30, 0x0D8 - 0x091),
/* 0x091 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(20, 30, 21, 5, 0x0D2 - 0x097),
/* 0x097 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 5, 21, 10, 0x0CC - 0x09D),
/* 0x09D */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_PROMISED_MIDNIGHT_MEETING, 0x0A2 - 0x0A1),
/* 0x0A1 */ SCHEDULE_CMD_RET_NONE(),
/* 0x0A2 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(23, 10, 23, 15, 0x0C6 - 0x0A8),
/* 0x0A8 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(23, 15, 0, 0, 0x0C0 - 0x0AE),
/* 0x0AE */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 6, 0, 0x0B5 - 0x0B4),
/* 0x0B4 */ SCHEDULE_CMD_RET_NONE(),
/* 0x0B5 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_HAD_MIDNIGHT_MEETING, 0x0BF - 0x0B9),
/* 0x0B9 */ SCHEDULE_CMD_RET_TIME(0, 0, 6, 0, ANJU_SCH_MIDNIGHT_MEETING),
/* 0x0BF */ SCHEDULE_CMD_RET_NONE(),
/* 0x0C0 */ SCHEDULE_CMD_RET_TIME(23, 15, 0, 0, ANJU_SCH_WALKING_49),
/* 0x0C6 */ SCHEDULE_CMD_RET_TIME(23, 10, 23, 15, ANJU_SCH_DOOR_31),
/* 0x0CC */ SCHEDULE_CMD_RET_TIME(21, 5, 21, 10, ANJU_SCH_DOOR_30),
/* 0x0D2 */ SCHEDULE_CMD_RET_TIME(20, 30, 21, 5, ANJU_SCH_WALKING_48),
/* 0x0D8 */ SCHEDULE_CMD_RET_TIME(20, 20, 20, 30, ANJU_SCH_WAITING_CLOSING_TIME),
/* 0x0DE */ SCHEDULE_CMD_RET_TIME(19, 50, 20, 20, ANJU_SCH_WALKING_47),
/* 0x0E4 */ SCHEDULE_CMD_RET_TIME(16, 30, 19, 50, ANJU_SCH_RECEPTIONIST_IDLE),
/* 0x0EA */ SCHEDULE_CMD_RET_TIME(16, 10, 16, 30, ANJU_SCH_ATTEND_GORON),
/* 0x0F0 */ SCHEDULE_CMD_RET_TIME(14, 18, 16, 10, ANJU_SCH_RECEPTIONIST_IDLE),
/* 0x0F6 */ SCHEDULE_CMD_RET_TIME(14, 8, 14, 18, ANJU_SCH_RECEIVE_LETTER_FROM_POSTMAN),
/* 0x0FC */ SCHEDULE_CMD_RET_TIME(13, 50, 14, 8, ANJU_SCH_RECEPTIONIST_IDLE),
/* 0x102 */ SCHEDULE_CMD_RET_TIME(13, 20, 13, 50, ANJU_SCH_WALKING_46),
/* 0x108 */ SCHEDULE_CMD_RET_TIME(13, 15, 13, 20, ANJU_SCH_DOOR_29),
/* 0x10E */ SCHEDULE_CMD_RET_TIME(12, 55, 13, 0, ANJU_SCH_DOOR_28),
/* 0x114 */ SCHEDULE_CMD_RET_TIME(12, 25, 12, 55, ANJU_SCH_WALKING_45),
/* 0x11A */ SCHEDULE_CMD_RET_TIME(12, 20, 12, 25, ANJU_SCH_DOOR_27),
/* 0x120 */ SCHEDULE_CMD_RET_TIME(12, 15, 12, 20, ANJU_SCH_WALKING_44),
/* 0x126 */ SCHEDULE_CMD_RET_TIME(12, 0, 12, 15, ANJU_SCH_GIVE_LUNCH_TO_GRANNY),
/* 0x12C */ SCHEDULE_CMD_RET_TIME(11, 55, 12, 0, ANJU_SCH_WALKING_43),
/* 0x132 */ SCHEDULE_CMD_RET_TIME(11, 50, 11, 55, ANJU_SCH_DOOR_26),
/* 0x138 */ SCHEDULE_CMD_RET_TIME(11, 30, 11, 50, ANJU_SCH_WALKING_42),
/* 0x13E */ SCHEDULE_CMD_RET_TIME(11, 10, 11, 30, ANJU_SCH_COOKING),
/* 0x144 */ SCHEDULE_CMD_RET_TIME(10, 55, 11, 10, ANJU_SCH_WALKING_40),
/* 0x14A */ SCHEDULE_CMD_RET_TIME(6, 0, 10, 55, ANJU_SCH_RECEPTIONIST_IDLE),
/* 0x150 */ SCHEDULE_CMD_RET_NONE(),
/* 0x151 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(2, 0x391 - 0x156),
/* 0x156 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_HAD_MIDNIGHT_MEETING, 0x29E - 0x15B),
/* 0x15B */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_L(SCENE_YADOYA, 0x1F2 - 0x160),
/* 0x160 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(11, 3, 11, 9, 0x1EC - 0x167),
/* 0x167 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 9, 11, 29, 0x1E6 - 0x16D),
/* 0x16D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 29, 11, 39, 0x1E0 - 0x173),
/* 0x173 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(17, 24, 17, 30, 0x1DA - 0x179),
/* 0x179 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(17, 30, 17, 55, 0x1D4 - 0x17F),
/* 0x17F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(17, 55, 18, 0, 0x1CE - 0x185),
/* 0x185 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 19, 50, 0x1C8 - 0x18B),
/* 0x18B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(19, 50, 20, 20, 0x1C2 - 0x191),
/* 0x191 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(20, 20, 20, 30, 0x1BC - 0x197),
/* 0x197 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(20, 30, 21, 0, 0x1B6 - 0x19D),
/* 0x19D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 21, 5, 0x1B0 - 0x1A3),
/* 0x1A3 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 30, 23, 0, 0x1AA - 0x1A9),
/* 0x1A9 */ SCHEDULE_CMD_RET_NONE(),
/* 0x1AA */ SCHEDULE_CMD_RET_TIME(21, 30, 23, 0, ANJU_SCH_TALKING_WITH_MOM),
/* 0x1B0 */ SCHEDULE_CMD_RET_TIME(21, 0, 21, 5, ANJU_SCH_DOOR_30),
/* 0x1B6 */ SCHEDULE_CMD_RET_TIME(20, 30, 21, 0, ANJU_SCH_WALKING_48),
/* 0x1BC */ SCHEDULE_CMD_RET_TIME(20, 20, 20, 30, ANJU_SCH_WAITING_CLOSING_TIME),
/* 0x1C2 */ SCHEDULE_CMD_RET_TIME(19, 50, 20, 20, ANJU_SCH_WALKING_47),
/* 0x1C8 */ SCHEDULE_CMD_RET_TIME(18, 0, 19, 50, ANJU_SCH_RECEPTIONIST_IDLE),
/* 0x1CE */ SCHEDULE_CMD_RET_TIME(17, 55, 18, 0, ANJU_SCH_DOOR_35),
/* 0x1D4 */ SCHEDULE_CMD_RET_TIME(17, 30, 17, 55, ANJU_SCH_WALKING_51),
/* 0x1DA */ SCHEDULE_CMD_RET_TIME(17, 24, 17, 30, ANJU_SCH_DOOR_34),
/* 0x1E0 */ SCHEDULE_CMD_RET_TIME(11, 29, 11, 39, ANJU_SCH_DOOR_33),
/* 0x1E6 */ SCHEDULE_CMD_RET_TIME(11, 9, 11, 29, ANJU_SCH_WALKING_50),
/* 0x1EC */ SCHEDULE_CMD_RET_TIME(11, 3, 11, 9, ANJU_SCH_DOOR_32),
/* 0x1F2 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x23F - 0x1F6),
/* 0x1F6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 29, 11, 39, 0x239 - 0x1FC),
/* 0x1FC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 39, 12, 25, 0x233 - 0x202),
/* 0x202 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 25, 13, 15, 0x22D - 0x208),
/* 0x208 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 55, 16, 45, 0x227 - 0x20E),
/* 0x20E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 45, 17, 24, 0x221 - 0x214),
/* 0x214 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(17, 24, 17, 30, 0x21B - 0x21A),
/* 0x21A */ SCHEDULE_CMD_RET_NONE(),
/* 0x21B */ SCHEDULE_CMD_RET_TIME(17, 24, 17, 30, ANJU_SCH_DOOR_38),
/* 0x221 */ SCHEDULE_CMD_RET_TIME(16, 45, 17, 24, ANJU_SCH_WALKING_59),
/* 0x227 */ SCHEDULE_CMD_RET_TIME(15, 55, 16, 45, ANJU_SCH_WALKING_58),
/* 0x22D */ SCHEDULE_CMD_RET_TIME(12, 25, 13, 15, ANJU_SCH_WALKING_55),
/* 0x233 */ SCHEDULE_CMD_RET_TIME(11, 39, 12, 25, ANJU_SCH_WALKING_54),
/* 0x239 */ SCHEDULE_CMD_RET_TIME(11, 29, 11, 39, ANJU_SCH_DOOR_37),
/* 0x23F */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x274 - 0x243),
/* 0x243 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 39, 12, 25, 0x26E - 0x249),
/* 0x249 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 25, 13, 15, 0x268 - 0x24F),
/* 0x24F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 55, 16, 45, 0x262 - 0x255),
/* 0x255 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 45, 17, 24, 0x25C - 0x25B),
/* 0x25B */ SCHEDULE_CMD_RET_NONE(),
/* 0x25C */ SCHEDULE_CMD_RET_TIME(16, 45, 17, 24, ANJU_SCH_WALKING_63),
/* 0x262 */ SCHEDULE_CMD_RET_TIME(15, 55, 16, 45, ANJU_SCH_WALKING_62),
/* 0x268 */ SCHEDULE_CMD_RET_TIME(12, 25, 13, 15, ANJU_SCH_WALKING_61),
/* 0x26E */ SCHEDULE_CMD_RET_TIME(11, 39, 12, 25, ANJU_SCH_WALKING_60),
/* 0x274 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ALLEY, 0x29D - 0x278),
/* 0x278 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 15, 13, 45, 0x297 - 0x27E),
/* 0x27E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 45, 15, 25, 0x291 - 0x284),
/* 0x284 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 25, 15, 55, 0x28B - 0x28A),
/* 0x28A */ SCHEDULE_CMD_RET_NONE(),
/* 0x28B */ SCHEDULE_CMD_RET_TIME(15, 25, 15, 55, ANJU_SCH_WALKING_57),
/* 0x291 */ SCHEDULE_CMD_RET_TIME(13, 45, 15, 25, ANJU_SCH_LAUNDRY_POOL_SIT),
/* 0x297 */ SCHEDULE_CMD_RET_TIME(13, 15, 13, 45, ANJU_SCH_WALKING_56),
/* 0x29D */ SCHEDULE_CMD_RET_NONE(),
/* 0x29E */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_L(SCENE_YADOYA, 0x390 - 0x2A3),
/* 0x2A3 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(6, 0, 10, 55, 0x38A - 0x2AA),
/* 0x2AA */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(10, 55, 11, 10, 0x384 - 0x2B1),
/* 0x2B1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(11, 10, 11, 30, 0x37E - 0x2B8),
/* 0x2B8 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(11, 30, 11, 50, 0x378 - 0x2BF),
/* 0x2BF */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(11, 50, 11, 55, 0x372 - 0x2C6),
/* 0x2C6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(11, 55, 12, 0, 0x36C - 0x2CD),
/* 0x2CD */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 12, 15, 0x366 - 0x2D4),
/* 0x2D4 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 15, 12, 20, 0x360 - 0x2DB),
/* 0x2DB */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 20, 12, 25, 0x35A - 0x2E1),
/* 0x2E1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 25, 12, 55, 0x354 - 0x2E7),
/* 0x2E7 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 55, 13, 0, 0x34E - 0x2ED),
/* 0x2ED */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 15, 13, 20, 0x348 - 0x2F3),
/* 0x2F3 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 20, 13, 50, 0x342 - 0x2F9),
/* 0x2F9 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 50, 19, 50, 0x33C - 0x2FF),
/* 0x2FF */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(19, 50, 20, 20, 0x336 - 0x305),
/* 0x305 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(20, 20, 20, 30, 0x330 - 0x30B),
/* 0x30B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(20, 30, 21, 5, 0x32A - 0x311),
/* 0x311 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 5, 21, 10, 0x324 - 0x317),
/* 0x317 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 30, 23, 0, 0x31E - 0x31D),
/* 0x31D */ SCHEDULE_CMD_RET_NONE(),
/* 0x31E */ SCHEDULE_CMD_RET_TIME(21, 30, 23, 0, ANJU_SCH_TALKING_WITH_MOM),
/* 0x324 */ SCHEDULE_CMD_RET_TIME(21, 5, 21, 10, ANJU_SCH_DOOR_30),
/* 0x32A */ SCHEDULE_CMD_RET_TIME(20, 30, 21, 5, ANJU_SCH_WALKING_48),
/* 0x330 */ SCHEDULE_CMD_RET_TIME(20, 20, 20, 30, ANJU_SCH_WAITING_CLOSING_TIME),
/* 0x336 */ SCHEDULE_CMD_RET_TIME(19, 50, 20, 20, ANJU_SCH_WALKING_47),
/* 0x33C */ SCHEDULE_CMD_RET_TIME(13, 50, 19, 50, ANJU_SCH_RECEPTIONIST_IDLE),
/* 0x342 */ SCHEDULE_CMD_RET_TIME(13, 20, 13, 50, ANJU_SCH_WALKING_46),
/* 0x348 */ SCHEDULE_CMD_RET_TIME(13, 15, 13, 20, ANJU_SCH_DOOR_29),
/* 0x34E */ SCHEDULE_CMD_RET_TIME(12, 55, 13, 0, ANJU_SCH_DOOR_28),
/* 0x354 */ SCHEDULE_CMD_RET_TIME(12, 25, 12, 55, ANJU_SCH_WALKING_45),
/* 0x35A */ SCHEDULE_CMD_RET_TIME(12, 20, 12, 25, ANJU_SCH_DOOR_27),
/* 0x360 */ SCHEDULE_CMD_RET_TIME(12, 15, 12, 20, ANJU_SCH_WALKING_44),
/* 0x366 */ SCHEDULE_CMD_RET_TIME(12, 0, 12, 15, ANJU_SCH_GIVE_LUNCH_TO_GRANNY),
/* 0x36C */ SCHEDULE_CMD_RET_TIME(11, 55, 12, 0, ANJU_SCH_WALKING_43),
/* 0x372 */ SCHEDULE_CMD_RET_TIME(11, 50, 11, 55, ANJU_SCH_DOOR_26),
/* 0x378 */ SCHEDULE_CMD_RET_TIME(11, 30, 11, 50, ANJU_SCH_WALKING_42),
/* 0x37E */ SCHEDULE_CMD_RET_TIME(11, 10, 11, 30, ANJU_SCH_COOKING),
/* 0x384 */ SCHEDULE_CMD_RET_TIME(10, 55, 11, 10, ANJU_SCH_WALKING_40),
/* 0x38A */ SCHEDULE_CMD_RET_TIME(6, 0, 10, 55, ANJU_SCH_RECEPTIONIST_IDLE),
/* 0x390 */ SCHEDULE_CMD_RET_NONE(),
/* 0x391 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(3, 0x447 - 0x396),
/* 0x396 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_DELIVERED_PENDANT_OF_MEMORIES, 0x3ED - 0x39A),
/* 0x39A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x3DB - 0x39E),
/* 0x39E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 11, 0, 0x3D5 - 0x3A4),
/* 0x3A4 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 0, 11, 25, 0x3CF - 0x3AA),
/* 0x3AA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 25, 11, 30, 0x3C9 - 0x3B0),
/* 0x3B0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 30, 11, 50, 0x3C3 - 0x3B6),
/* 0x3B6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 50, 12, 0, 0x3BD - 0x3BC),
/* 0x3BC */ SCHEDULE_CMD_RET_NONE(),
/* 0x3BD */ SCHEDULE_CMD_RET_TIME(11, 50, 12, 0, ANJU_SCH_DOOR_39),
/* 0x3C3 */ SCHEDULE_CMD_RET_TIME(11, 30, 11, 50, ANJU_SCH_WALKING_53),
/* 0x3C9 */ SCHEDULE_CMD_RET_TIME(11, 25, 11, 30, ANJU_SCH_DOOR_36),
/* 0x3CF */ SCHEDULE_CMD_RET_TIME(11, 0, 11, 25, ANJU_SCH_WALKING_52),
/* 0x3D5 */ SCHEDULE_CMD_RET_TIME(6, 0, 11, 0, ANJU_SCH_SWEEPING),
/* 0x3DB */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_OMOYA, 0x3EC - 0x3DF),
/* 0x3DF */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x3E6 - 0x3E5),
/* 0x3E5 */ SCHEDULE_CMD_RET_NONE(),
/* 0x3E6 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, ANJU_SCH_RANCH),
/* 0x3EC */ SCHEDULE_CMD_RET_NONE(),
/* 0x3ED */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x446 - 0x3F1),
/* 0x3F1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 11, 0, 0x440 - 0x3F7),
/* 0x3F7 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 0, 11, 25, 0x43A - 0x3FD),
/* 0x3FD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 25, 11, 30, 0x434 - 0x403),
/* 0x403 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 30, 11, 50, 0x42E - 0x409),
/* 0x409 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 50, 12, 0, 0x428 - 0x40F),
/* 0x40F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 5, 0, 0x422 - 0x415),
/* 0x415 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(5, 0, 6, 0, 0x41C - 0x41B),
/* 0x41B */ SCHEDULE_CMD_RET_NONE(),
/* 0x41C */ SCHEDULE_CMD_RET_TIME(5, 0, 6, 0, ANJU_SCH_WAITING_FOR_KAFEI),
/* 0x422 */ SCHEDULE_CMD_RET_TIME(18, 0, 5, 0, ANJU_SCH_WAITING_FOR_KAFEI),
/* 0x428 */ SCHEDULE_CMD_RET_TIME(11, 50, 12, 0, ANJU_SCH_DOOR_39),
/* 0x42E */ SCHEDULE_CMD_RET_TIME(11, 30, 11, 50, ANJU_SCH_WALKING_53),
/* 0x434 */ SCHEDULE_CMD_RET_TIME(11, 25, 11, 30, ANJU_SCH_DOOR_36),
/* 0x43A */ SCHEDULE_CMD_RET_TIME(11, 0, 11, 25, ANJU_SCH_WALKING_52),
/* 0x440 */ SCHEDULE_CMD_RET_TIME(6, 0, 11, 0, ANJU_SCH_SWEEPING),
/* 0x446 */ SCHEDULE_CMD_RET_NONE(),
/* 0x447 */ SCHEDULE_CMD_RET_NONE(),
};
/**
* The schedule script is roughly equivalent to the following pseudo-code:
s32 scheduleScript(PlayState* play) {
if (gSaveContext.save.day == 1) {
if (play->sceneId == SCENE_YADOYA) {
if ((6, 0) <= NOW <= (10, 55)) {
return ANJU_SCH_RECEPTIONIST_IDLE;
} else if ((10, 55) <= NOW <= (11, 10)) {
return ANJU_SCH_WALKING_40;
} else if ((11, 10) <= NOW <= (11, 30)) {
return ANJU_SCH_COOKING;
} else if ((11, 30) <= NOW <= (11, 50)) {
return ANJU_SCH_WALKING_42;
} else if ((11, 50) <= NOW <= (11, 55)) {
return ANJU_SCH_DOOR_26;
} else if ((11, 55) <= NOW <= (12, 0)) {
return ANJU_SCH_WALKING_43;
} else if ((12, 0) <= NOW <= (12, 15)) {
return ANJU_SCH_GIVE_LUNCH_TO_GRANNY;
} else if ((12, 15) <= NOW <= (12, 20)) {
return ANJU_SCH_WALKING_44;
} else if ((12, 20) <= NOW <= (12, 25)) {
return ANJU_SCH_DOOR_27;
} else if ((12, 25) <= NOW <= (12, 55)) {
return ANJU_SCH_WALKING_45;
} else if ((12, 55) <= NOW <= (13, 0)) {
return ANJU_SCH_DOOR_28;
} else if ((13, 15) <= NOW <= (13, 20)) {
return ANJU_SCH_DOOR_29;
} else if ((13, 20) <= NOW <= (13, 50)) {
return ANJU_SCH_WALKING_46;
} else if ((13, 50) <= NOW <= (14, 8)) {
return ANJU_SCH_RECEPTIONIST_IDLE;
} else if ((14, 8) <= NOW <= (14, 18)) {
return ANJU_SCH_RECEIVE_LETTER_FROM_POSTMAN;
} else if ((14, 18) <= NOW <= (16, 10)) {
return ANJU_SCH_RECEPTIONIST_IDLE;
} else if ((16, 10) <= NOW <= (16, 30)) {
return ANJU_SCH_ATTEND_GORON;
} else if ((16, 30) <= NOW <= (19, 50)) {
return ANJU_SCH_RECEPTIONIST_IDLE;
} else if ((19, 50) <= NOW <= (20, 20)) {
return ANJU_SCH_WALKING_47;
} else if ((20, 20) <= NOW <= (20, 30)) {
return ANJU_SCH_WAITING_CLOSING_TIME;
} else if ((20, 30) <= NOW <= (21, 5)) {
return ANJU_SCH_WALKING_48;
} else if ((21, 5) <= NOW <= (21, 10)) {
return ANJU_SCH_DOOR_30;
} else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_PROMISED_MIDNIGHT_MEETING)) {
if ((23, 10) <= NOW <= (23, 15)) {
return ANJU_SCH_DOOR_31;
} else if ((23, 15) <= NOW <= (0, 0)) {
return ANJU_SCH_WALKING_49;
} else if ((0, 0) <= NOW <= (6, 0)) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_HAD_MIDNIGHT_MEETING)) {
return None;
}
return ANJU_SCH_MIDNIGHT_MEETING;
} else {
return None;
}
} else {
return None;
}
} else {
return None;
}
} else if (gSaveContext.save.day == 2) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_HAD_MIDNIGHT_MEETING)) {
if (play->sceneId == SCENE_YADOYA) {
if ((6, 0) <= NOW <= (10, 55)) {
return ANJU_SCH_RECEPTIONIST_IDLE;
} else if ((10, 55) <= NOW <= (11, 10)) {
return ANJU_SCH_WALKING_40;
} else if ((11, 10) <= NOW <= (11, 30)) {
return ANJU_SCH_COOKING;
} else if ((11, 30) <= NOW <= (11, 50)) {
return ANJU_SCH_WALKING_42;
} else if ((11, 50) <= NOW <= (11, 55)) {
return ANJU_SCH_DOOR_26;
} else if ((11, 55) <= NOW <= (12, 0)) {
return ANJU_SCH_WALKING_43;
} else if ((12, 0) <= NOW <= (12, 15)) {
return ANJU_SCH_GIVE_LUNCH_TO_GRANNY;
} else if ((12, 15) <= NOW <= (12, 20)) {
return ANJU_SCH_WALKING_44;
} else if ((12, 20) <= NOW <= (12, 25)) {
return ANJU_SCH_DOOR_27;
} else if ((12, 25) <= NOW <= (12, 55)) {
return ANJU_SCH_WALKING_45;
} else if ((12, 55) <= NOW <= (13, 0)) {
return ANJU_SCH_DOOR_28;
} else if ((13, 15) <= NOW <= (13, 20)) {
return ANJU_SCH_DOOR_29;
} else if ((13, 20) <= NOW <= (13, 50)) {
return ANJU_SCH_WALKING_46;
} else if ((13, 50) <= NOW <= (19, 50)) {
return ANJU_SCH_RECEPTIONIST_IDLE;
} else if ((19, 50) <= NOW <= (20, 20)) {
return ANJU_SCH_WALKING_47;
} else if ((20, 20) <= NOW <= (20, 30)) {
return ANJU_SCH_WAITING_CLOSING_TIME;
} else if ((20, 30) <= NOW <= (21, 5)) {
return ANJU_SCH_WALKING_48;
} else if ((21, 5) <= NOW <= (21, 10)) {
return ANJU_SCH_DOOR_30;
} else if ((21, 30) <= NOW <= (23, 0)) {
return ANJU_SCH_TALKING_WITH_MOM;
} else {
return None;
}
} else {
return None;
}
} else if (play->sceneId == SCENE_YADOYA) {
if ((11, 3) <= NOW <= (11, 9)) {
return ANJU_SCH_DOOR_32;
} else if ((11, 9) <= NOW <= (11, 29)) {
return ANJU_SCH_WALKING_50;
} else if ((11, 29) <= NOW <= (11, 39)) {
return ANJU_SCH_DOOR_33;
} else if ((17, 24) <= NOW <= (17, 30)) {
return ANJU_SCH_DOOR_34;
} else if ((17, 30) <= NOW <= (17, 55)) {
return ANJU_SCH_WALKING_51;
} else if ((17, 55) <= NOW <= (18, 0)) {
return ANJU_SCH_DOOR_35;
} else if ((18, 0) <= NOW <= (19, 50)) {
return ANJU_SCH_RECEPTIONIST_IDLE;
} else if ((19, 50) <= NOW <= (20, 20)) {
return ANJU_SCH_WALKING_47;
} else if ((20, 20) <= NOW <= (20, 30)) {
return ANJU_SCH_WAITING_CLOSING_TIME;
} else if ((20, 30) <= NOW <= (21, 0)) {
return ANJU_SCH_WALKING_48;
} else if ((21, 0) <= NOW <= (21, 5)) {
return ANJU_SCH_DOOR_30;
} else if ((21, 30) <= NOW <= (23, 0)) {
return ANJU_SCH_TALKING_WITH_MOM;
} else {
return None;
}
} else if (play->sceneId == SCENE_TOWN) {
if ((11, 29) <= NOW <= (11, 39)) {
return ANJU_SCH_DOOR_37;
} else if ((11, 39) <= NOW <= (12, 25)) {
return ANJU_SCH_WALKING_54;
} else if ((12, 25) <= NOW <= (13, 15)) {
return ANJU_SCH_WALKING_55;
} else if ((15, 55) <= NOW <= (16, 45)) {
return ANJU_SCH_WALKING_58;
} else if ((16, 45) <= NOW <= (17, 24)) {
return ANJU_SCH_WALKING_59;
} else if ((17, 24) <= NOW <= (17, 30)) {
return ANJU_SCH_DOOR_38;
} else {
return None;
}
} else if (play->sceneId == SCENE_CLOCKTOWER) {
if ((11, 39) <= NOW <= (12, 25)) {
return ANJU_SCH_WALKING_60;
} else if ((12, 25) <= NOW <= (13, 15)) {
return ANJU_SCH_WALKING_61;
} else if ((15, 55) <= NOW <= (16, 45)) {
return ANJU_SCH_WALKING_62;
} else if ((16, 45) <= NOW <= (17, 24)) {
return ANJU_SCH_WALKING_63;
} else {
return None;
}
} else if (play->sceneId == SCENE_ALLEY) {
if ((13, 15) <= NOW <= (13, 45)) {
return ANJU_SCH_WALKING_56;
} else if ((13, 45) <= NOW <= (15, 25)) {
return ANJU_SCH_LAUNDRY_POOL_SIT;
} else if ((15, 25) <= NOW <= (15, 55)) {
return ANJU_SCH_WALKING_57;
} else {
return None;
}
} else {
return None;
}
} else if (gSaveContext.save.day == 3) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DELIVERED_PENDANT_OF_MEMORIES)) {
if (play->sceneId == SCENE_YADOYA) {
if ((6, 0) <= NOW <= (11, 0)) {
return ANJU_SCH_SWEEPING;
} else if ((11, 0) <= NOW <= (11, 25)) {
return ANJU_SCH_WALKING_52;
} else if ((11, 25) <= NOW <= (11, 30)) {
return ANJU_SCH_DOOR_36;
} else if ((11, 30) <= NOW <= (11, 50)) {
return ANJU_SCH_WALKING_53;
} else if ((11, 50) <= NOW <= (12, 0)) {
return ANJU_SCH_DOOR_39;
} else if ((18, 0) <= NOW <= (5, 0)) {
return ANJU_SCH_WAITING_FOR_KAFEI;
} else if ((5, 0) <= NOW <= (6, 0)) {
return ANJU_SCH_WAITING_FOR_KAFEI;
} else {
return None;
}
} else {
return None;
}
} else if (play->sceneId == SCENE_YADOYA) {
if ((6, 0) <= NOW <= (11, 0)) {
return ANJU_SCH_SWEEPING;
} else if ((11, 0) <= NOW <= (11, 25)) {
return ANJU_SCH_WALKING_52;
} else if ((11, 25) <= NOW <= (11, 30)) {
return ANJU_SCH_DOOR_36;
} else if ((11, 30) <= NOW <= (11, 50)) {
return ANJU_SCH_WALKING_53;
} else if ((11, 50) <= NOW <= (12, 0)) {
return ANJU_SCH_DOOR_39;
} else {
return None;
}
} else if (play->sceneId == SCENE_OMOYA) {
if ((18, 0) <= NOW <= (6, 0)) {
return ANJU_SCH_RANCH;
} else {
return None;
}
} else {
return None;
}
} else {
return None;
}
}
*/
#include "build/src/overlays/actors/ovl_En_An/scheduleScripts.schl.inc"
static s32 sSearchTimePathLimit[ANJU_SCH_MAX] = {
-1, // ANJU_SCH_NONE

View File

@ -0,0 +1,17 @@
sSchedule {
if_day (1) {
if_scene (SCENE_BACKTOWN) {
if_time_range (0, 0, 0, 30) {
return_time (0, 0, 0, 30, BOMB_SHOP_LADY_SCH_FOLLOW_TIME_PATH)
} else if_since_time (0, 30) {
return_l (BOMB_SHOP_LADY_SCH_KNOCKED_OVER)
} else {
return_none
}
} else {
return_none
}
} else {
return_none
}
}

View File

@ -129,17 +129,7 @@ static DamageTable sDamageTable = {
/* Powder Keg */ DMG_ENTRY(1, 0x0),
};
static u8 sSchedule[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0x1D - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_BACKTOWN, 0x1C - 0x08),
/* 0x08 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 30, 0x16 - 0x0E),
/* 0x0E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(0, 30, 0x15 - 0x12),
/* 0x12 */ SCHEDULE_CMD_RET_VAL_L(BOMB_SHOP_LADY_SCH_KNOCKED_OVER),
/* 0x15 */ SCHEDULE_CMD_RET_NONE(),
/* 0x16 */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 30, BOMB_SHOP_LADY_SCH_FOLLOW_TIME_PATH),
/* 0x1C */ SCHEDULE_CMD_RET_NONE(),
/* 0x1D */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Baba/scheduleScripts.schl.inc"
static s32 sSearchTimePathLimit[] = { -1, -1, 0 };

View File

@ -0,0 +1,11 @@
sScheduleScript {
if_scene (SCENE_YADOYA) {
if_time_range (0, 0, 6, 0) {
return_time (0, 0, 6, 0, TOILET_HAND_SCH_AVAILABLE)
} else {
return_none
}
} else {
return_none
}
}

View File

@ -29,13 +29,7 @@ typedef enum {
/* 1 */ TOILET_HAND_SCH_AVAILABLE
} ToiletHandScheduleResult;
static u8 sScheduleScript[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x11 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 6, 0, 0x0B - 0x0A),
/* 0x0A */ SCHEDULE_CMD_RET_NONE(),
/* 0x0B */ SCHEDULE_CMD_RET_TIME(0, 0, 6, 0, TOILET_HAND_SCH_AVAILABLE),
/* 0x11 */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Bjt/scheduleScripts.schl.inc"
static u8 sMsgEventScript[] = {
0x0E, 0x29, 0x48, 0x0C, 0x0E, 0x00, 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x52, 0x00, 0x5F, 0x2C, 0x29, 0x4A, 0x0C, 0x2F,

View File

@ -0,0 +1,344 @@
D_808675D0 {
if_day (3) {
not if_time_range (6, 0, 23, 0) {
not if_time_range (0, 0, 6, 0) {
return_s (7)
}
}
}
return_none
}
D_808675E4 {
if_before_time (9, 0) {
return_s (9)
} else if_before_time (12, 0) {
branch (label_0x1D)
} else {
if_day (1) {
branch (label_0x0E)
label_0x0E:
if_before_time (13, 0) {
branch (label_0x1C)
} else if_before_time (15, 0) {
branch (label_0x1D)
} else if_before_time (0, 0) {
branch (label_0x1C)
} else {
return_s (9)
}
label_0x1C:
return_none
label_0x1D:
return_s (8)
} else if_day (2) {
if_week_event_reg (WEEKEVENTREG_28_08) {
if_before_time (13, 0) {
branch (label_0x1C)
} else if_before_time (17, 0) {
branch (label_0x1D)
} else if_before_time (0, 0) {
branch (label_0x1C)
} else {
return_s (9)
}
} else if_since_time (13, 0) {
return_s (9)
} else {
return_none
}
} else if_before_time (13, 0) {
branch (label_0x1C)
} else if_before_time (13, 0) {
branch (label_0x1D)
} else if_before_time (18, 0) {
return_s (9)
} else {
return_none
}
}
}
D_80867634 {
if_time_range (6, 0, 23, 0) {
return_none
} else {
return_s (28)
}
}
D_80867640 {
if_time_range (21, 0, 22, 0) {
return_s (11)
} else {
return_none
}
}
D_8086764C {
not if_time_range (22, 0, 5, 0) {
return_s (10)
} else {
return_none
}
}
D_80867658 {
if_day (2) {
not if_week_event_reg (WEEKEVENTREG_28_08) {
return_s (12)
} else if_time_range (15, 10, 22, 0) {
return_none
} else {
return_s (12)
}
}
if_day (3) {
if_since_time (13, 0) {
not if_week_event_reg (WEEKEVENTREG_51_08) {
return_s (12)
} else if_since_time (22, 0) {
return_s (12)
} else {
return_none
}
}
}
return_s (12)
}
D_80867684 {
return_none
}
D_80867688 {
if_since_time (22, 0) {
return_s (15)
} else {
return_none
}
}
D_80867690 {
if_since_time (22, 0) {
return_s (16)
} else {
return_none
}
}
D_80867698 {
if_since_time (22, 0) {
return_s (17)
} else {
return_none
}
}
D_808676A0 {
if_time_range (10, 0, 21, 0) {
return_none
} else if_time_range (22, 0, 5, 0) {
if_misc (SCHEDULE_CHECK_MISC_MASK_ROMANI) {
return_s (33)
} else {
return_s (34)
}
} else {
return_s (18)
}
}
D_808676B8 {
not if_misc (SCHEDULE_CHECK_MISC_ROOM_KEY) {
if_day (3) {
if_before_time (8, 0) {
return_s (19)
} else {
return_none
}
} else if_time_range (8, 0, 20, 30) {
return_none
} else {
return_s (19)
}
} else {
return_none
}
}
D_808676D0 {
return_none
}
D_808676D4 {
return_none
}
D_808676D8 {
if_day (3) {
if_since_time (18, 0) {
return_none
}
}
return_s (20)
}
D_808676E4 {
not if_misc (SCHEDULE_CHECK_MISC_ROOM_KEY) {
return_s (22)
} else {
return_none
}
}
D_808676EC {
return_none
}
D_808676F0 {
if_day (3) {
if_since_time (10, 0) {
label_0x8:
return_none
} else {
branch (label_0xF)
}
} else {
if_time_range (10, 0, 20, 0) {
branch (label_0x8)
} else {
label_0xF:
return_s (21)
}
}
}
D_80867704 {
return_none
}
D_80867708 {
return_none
}
D_8086770C {
return_none
}
D_80867710 {
return_none
}
D_80867714 {
if_since_time (20, 0) {
return_s (23)
} else {
return_none
}
}
D_8086771C {
if_day (1) {
if_since_time (2, 30) {
return_s (24)
} else {
label_0x0A:
return_none
}
} else if_day (3) {
if_since_time (20, 0) {
return_s (12)
} else {
branch (label_0x0A)
}
} else {
branch (label_0x0A)
}
}
D_80867734 {
if_since_time (20, 0) {
return_s (25)
} else {
return_none
}
}
D_8086773C {
if_since_time (20, 0) {
return_s (26)
} else {
return_none
}
}
D_80867744 {
not if_day (2) {
branch (label_0x08)
} else {
if_week_event_reg (WEEKEVENTREG_99_80) {
branch (label_0x0E)
} else {
label_0x08:
if_before_time (20, 0) {
branch (label_0x14)
} else {
return_s (27)
}
}
}
label_0x0E:
if_before_time (18, 0) {
branch (label_0x14)
} else {
return_s (27)
}
label_0x14:
return_none
}
D_8086775C {
not if_week_event_reg (WEEKEVENTREG_CLEARED_STONE_TOWER_TEMPLE) {
not if_week_event_reg (WEEKEVENTREG_75_20) {
not if_week_event_reg (WEEKEVENTREG_14_04) {
return_s (29)
} else not if_week_event_reg (WEEKEVENTREG_59_01) {
if_week_event_reg (WEEKEVENTREG_61_02) {
return_s (31)
} else {
return_s (30)
}
} else {
return_none
}
}
}
return_none
}
D_80867778 {
return_s (32)
}
D_8086777C{
return_none
}
D_80867780 {
return_none
}
D_80867784 {
if_since_time (22, 0) {
return_s (35)
} else {
return_none
}
}

View File

@ -36,240 +36,9 @@ void func_80867144(EnDoor* this, PlayState* play);
void func_808670F0(EnDoor* this, PlayState* play);
void func_80866A5C(EnDoor* this, PlayState* play);
u8 D_808675D0[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x12 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 23, 0, 0x12 - 0x0A),
/* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 6, 0, 0x12 - 0x10),
/* 0x10 */ SCHEDULE_CMD_RET_VAL_S(7),
/* 0x12 */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Door/scheduleScripts.schl.inc"
u8 D_808675E4[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(9, 0, 0x4B - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(12, 0, 0x1D - 0x08),
/* 0x08 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0x1F - 0x0C),
/* 0x0C */ SCHEDULE_CMD_BRANCH_S(0x0),
/* 0x0E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x1C - 0x12),
/* 0x12 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(15, 0, 0x1D - 0x16),
/* 0x16 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(0, 0, 0x1C - 0x1A),
/* 0x1A */ SCHEDULE_CMD_RET_VAL_S(9),
/* 0x1C */ SCHEDULE_CMD_RET_NONE(),
/* 0x1D */ SCHEDULE_CMD_RET_VAL_S(8),
/* 0x1F */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x3C - 0x23),
/* 0x23 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_28_08, 0x2E - 0x27),
/* 0x27 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x2D - 0x2B),
/* 0x2B */ SCHEDULE_CMD_RET_VAL_S(9),
/* 0x2D */ SCHEDULE_CMD_RET_NONE(),
/* 0x2E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x1C - 0x32),
/* 0x32 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(17, 0, 0x1D - 0x36),
/* 0x36 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(0, 0, 0x1C - 0x3A),
/* 0x3A */ SCHEDULE_CMD_RET_VAL_S(9),
/* 0x3C */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x1C - 0x40),
/* 0x40 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x1D - 0x44),
/* 0x44 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(18, 0, 0x49 - 0x48),
/* 0x48 */ SCHEDULE_CMD_RET_NONE(),
/* 0x49 */ SCHEDULE_CMD_RET_VAL_S(9),
/* 0x4B */ SCHEDULE_CMD_RET_VAL_S(9),
};
u8 D_80867634[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 23, 0, 0x8 - 0x6),
/* 0x6 */ SCHEDULE_CMD_RET_VAL_S(28),
/* 0x8 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867640[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 22, 0, 0x7 - 0x6),
/* 0x6 */ SCHEDULE_CMD_RET_NONE(),
/* 0x7 */ SCHEDULE_CMD_RET_VAL_S(11),
};
u8 D_8086764C[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(22, 0, 5, 0, 0x8 - 0x6),
/* 0x6 */ SCHEDULE_CMD_RET_VAL_S(10),
/* 0x8 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867658[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x13 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_28_08, 0x0A - 0x08),
/* 0x08 */ SCHEDULE_CMD_RET_VAL_S(12),
/* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 10, 22, 0, 0x12 - 0x10),
/* 0x10 */ SCHEDULE_CMD_RET_VAL_S(12),
/* 0x12 */ SCHEDULE_CMD_RET_NONE(),
/* 0x13 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x28 - 0x17),
/* 0x17 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x28 - 0x1B),
/* 0x1B */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_08, 0x21 - 0x1F),
/* 0x1F */ SCHEDULE_CMD_RET_VAL_S(12),
/* 0x21 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x27 - 0x25),
/* 0x25 */ SCHEDULE_CMD_RET_VAL_S(12),
/* 0x27 */ SCHEDULE_CMD_RET_NONE(),
/* 0x28 */ SCHEDULE_CMD_RET_VAL_S(12),
};
u8 D_80867684[] = {
/* 0x0 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867688[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x6 - 0x4),
/* 0x4 */ SCHEDULE_CMD_RET_VAL_S(15),
/* 0x6 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867690[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x6 - 0x4),
/* 0x4 */ SCHEDULE_CMD_RET_VAL_S(16),
/* 0x6 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867698[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x6 - 0x4),
/* 0x4 */ SCHEDULE_CMD_RET_VAL_S(17),
/* 0x6 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_808676A0[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 21, 0, 0x15 - 0x06),
/* 0x06 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(22, 0, 5, 0, 0x0E - 0x0C),
/* 0x0C */ SCHEDULE_CMD_RET_VAL_S(18),
/* 0x0E */ SCHEDULE_CMD_CHECK_MISC_S(SCHEDULE_CHECK_MISC_MASK_ROMANI, 0x13 - 0x11),
/* 0x11 */ SCHEDULE_CMD_RET_VAL_S(34),
/* 0x13 */ SCHEDULE_CMD_RET_VAL_S(33),
/* 0x15 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_808676B8[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_MISC_S(SCHEDULE_CHECK_MISC_ROOM_KEY, 0x17 - 0x03),
/* 0x03 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x0E - 0x07),
/* 0x07 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(8, 0, 0x0C - 0x0B),
/* 0x0B */ SCHEDULE_CMD_RET_NONE(),
/* 0x0C */ SCHEDULE_CMD_RET_VAL_S(19),
/* 0x0E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(8, 0, 20, 30, 0x16 - 0x14),
/* 0x14 */ SCHEDULE_CMD_RET_VAL_S(19),
/* 0x16 */ SCHEDULE_CMD_RET_NONE(),
/* 0x17 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_808676D0[] = {
/* 0x0 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_808676D4[] = {
/* 0x0 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_808676D8[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x9 - 0x4),
/* 0x4 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(18, 0, 0x9 - 0x8),
/* 0x8 */ SCHEDULE_CMD_RET_NONE(),
/* 0x9 */ SCHEDULE_CMD_RET_VAL_S(20),
};
u8 D_808676E4[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_MISC_S(SCHEDULE_CHECK_MISC_ROOM_KEY, 0x5 - 0x3),
/* 0x3 */ SCHEDULE_CMD_RET_VAL_S(22),
/* 0x5 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_808676EC[] = {
/* 0x0 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_808676F0[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x9 - 0x4),
/* 0x4 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(10, 0, 0xF - 0x8),
/* 0x8 */ SCHEDULE_CMD_RET_NONE(),
/* 0x9 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 20, 0, 0x8 - 0xF),
/* 0xF */ SCHEDULE_CMD_RET_VAL_S(21),
};
u8 D_80867704[] = {
/* 0x0 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867708[] = {
/* 0x0 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_8086770C[] = {
/* 0x0 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867710[] = {
/* 0x0 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867714[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x6 - 0x4),
/* 0x4 */ SCHEDULE_CMD_RET_VAL_S(23),
/* 0x6 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_8086771C[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0x0B - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(2, 30, 0x0A - 0x08),
/* 0x08 */ SCHEDULE_CMD_RET_VAL_S(24),
/* 0x0A */ SCHEDULE_CMD_RET_NONE(),
/* 0x0B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x0A - 0x0F),
/* 0x0F */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x0A - 0x13),
/* 0x13 */ SCHEDULE_CMD_RET_VAL_S(12),
};
u8 D_80867734[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x6 - 0x4),
/* 0x4 */ SCHEDULE_CMD_RET_VAL_S(25),
/* 0x6 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_8086773C[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x6 - 0x4),
/* 0x4 */ SCHEDULE_CMD_RET_VAL_S(26),
/* 0x6 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867744[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x08 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_99_80, 0x0E - 0x08),
/* 0x08 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x14 - 0x0C),
/* 0x0C */ SCHEDULE_CMD_RET_VAL_S(27),
/* 0x0E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(18, 0, 0x14 - 0x12),
/* 0x12 */ SCHEDULE_CMD_RET_VAL_S(27),
/* 0x14 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_8086775C[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_CLEARED_STONE_TOWER_TEMPLE, 0x1B - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_75_20, 0x1B - 0x08),
/* 0x08 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_14_04, 0x0E - 0x0C),
/* 0x0C */ SCHEDULE_CMD_RET_VAL_S(29),
/* 0x0E */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_59_01, 0x1A - 0x12),
/* 0x12 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_61_02, 0x18 - 0x16),
/* 0x16 */ SCHEDULE_CMD_RET_VAL_S(30),
/* 0x18 */ SCHEDULE_CMD_RET_VAL_S(31),
/* 0x1A */ SCHEDULE_CMD_RET_NONE(),
/* 0x1B */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867778[] = {
/* 0x0 */ SCHEDULE_CMD_RET_VAL_S(32),
};
u8 D_8086777C[] = {
/* 0x0 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867780[] = {
/* 0x0 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867784[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x6 - 0x4),
/* 0x4 */ SCHEDULE_CMD_RET_VAL_S(35),
/* 0x6 */ SCHEDULE_CMD_RET_NONE(),
};
u8* D_8086778C[] = {
ScheduleScript* D_8086778C[] = {
D_808675D0, D_808675E4, D_80867634, D_80867640, D_8086764C, D_80867658, D_80867684, D_80867688,
D_80867690, D_80867698, D_808676A0, D_808676B8, D_808676D0, D_808676D4, D_808676D8, D_808676E4,
D_808676EC, D_808676F0, D_80867704, D_80867708, D_8086770C, D_80867710, D_80867714, D_8086771C,

View File

@ -0,0 +1,121 @@
D_80951820 {
if_day (1) {
if_scene (SCENE_YADOYA) {
if_time_range (6, 0, 9, 0) {
return_time (6, 0, 9, 0, 6)
} else if_time_range (9, 0, 9, 10) {
return_time (9, 0, 9, 10, 24)
} else if_time_range (9, 10, 9, 15) {
return_time (9, 10, 9, 15, 15)
} else {
return_none
}
} else if_scene (SCENE_TOWN) {
if_time_range (9, 10, 9, 15) {
return_time (9, 10, 9, 15, 9)
} else if_time_range (9, 15, 10, 0) {
return_time (9, 15, 10, 0, 21)
} else if_time_range (10, 0, 10, 5) {
return_time (10, 0, 10, 5, 10)
} else if_time_range (12, 15, 12, 20) {
return_time (12, 15, 12, 20, 11)
} else if_time_range (12, 20, 12, 50) {
return_time (12, 20, 12, 50, 22)
} else if_time_range (12, 50, 12, 55) {
return_time (12, 50, 12, 55, 12)
} else {
return_none
}
} else if_scene (SCENE_SONCHONOIE) {
if_time_range (10, 0, 10, 5) {
return_time (10, 0, 10, 5, 16)
} else if_time_range (10, 5, 10, 10) {
return_time (10, 5, 10, 10, 25)
} else if_time_range (10, 10, 10, 30) {
return_time (10, 10, 10, 30, 1)
} else if_time_range (10, 30, 10, 40) {
return_time (10, 30, 10, 40, 26)
} else if_time_range (10, 40, 10, 45) {
return_time (10, 40, 10, 45, 18)
} else if_time_range (10, 45, 10, 55) {
return_time (10, 45, 10, 55, 27)
} else if_time_range (10, 55, 11, 45) {
return_time (10, 55, 11, 45, 2)
} else if_time_range (11, 45, 11, 55) {
return_time (11, 45, 11, 55, 28)
} else if_time_range (11, 55, 12, 0) {
return_time (11, 55, 12, 0, 19)
} else if_time_range (12, 0, 12, 15) {
return_time (12, 0, 12, 15, 29)
} else if_time_range (12, 15, 12, 20) {
return_time (12, 15, 12, 20, 17)
} else {
return_none
}
} else if_scene (SCENE_MILK_BAR) {
if_time_range (12, 55, 13, 0) {
return_time (12, 55, 13, 0, 20)
} else if_time_range (13, 0, 13, 25) {
return_time (13, 0, 13, 25, 30)
} else if_time_range (13, 25, 21, 5) {
return_time (13, 25, 21, 5, 3)
} else if_time_range (21, 55, 5, 5) {
return_time (21, 55, 5, 5, 5)
} else {
return_none
}
} else {
return_none
}
} else if_day (2) {
if_week_event_reg (WEEKEVENTREG_50_01) {
if_scene (SCENE_YADOYA) {
if_time_range (6, 0, 18, 0) {
return_time (6, 0, 18, 0, 7)
} else if_time_range (18, 0, 6, 0) {
return_time (0, 0, 0, 0, 8)
} else {
return_none
}
} else {
return_none
}
} else if_scene (SCENE_YADOYA) {
if_time_range (6, 0, 18, 0) {
return_time (6, 0, 18, 0, 7)
} else if_time_range (18, 0, 21, 0) {
return_time (18, 0, 21, 0, 6)
} else if_time_range (21, 0, 21, 10) {
return_time (21, 0, 21, 10, 24)
} else if_time_range (21, 10, 21, 15) {
return_time (21, 10, 21, 15, 15)
} else {
return_none
}
} else if_scene (SCENE_TOWN) {
if_time_range (21, 10, 21, 15) {
return_time (21, 10, 21, 15, 13)
} else if_time_range (21, 15, 21, 25) {
return_time (21, 15, 21, 25, 23)
} else if_time_range (21, 25, 21, 30) {
return_time (21, 25, 21, 30, 14)
} else {
return_none
}
} else if_scene (SCENE_MILK_BAR) {
if_time_range (21, 30, 21, 45) {
return_time (21, 30, 21, 45, 20)
} else if_time_range (21, 45, 22, 10) {
return_time (21, 45, 22, 10, 30)
} else if_time_range (22, 10, 6, 0) {
return_time (22, 10, 6, 0, 5)
} else {
return_none
}
} else {
return_none
}
} else {
return_none
}
}

View File

@ -19,103 +19,7 @@ void EnGm_Draw(Actor* thisx, PlayState* play);
void func_80950CDC(EnGm* this, PlayState* play);
void func_80950DB8(EnGm* this, PlayState* play);
static u8 D_80951820[] = {
/* 0x000 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(1, 0x13B - 0x005),
/* 0x005 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x02E - 0x009),
/* 0x009 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 9, 0, 0x028 - 0x00F),
/* 0x00F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 0, 9, 10, 0x022 - 0x015),
/* 0x015 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 10, 9, 15, 0x01C - 0x01B),
/* 0x01B */ SCHEDULE_CMD_RET_NONE(),
/* 0x01C */ SCHEDULE_CMD_RET_TIME(9, 10, 9, 15, 15),
/* 0x022 */ SCHEDULE_CMD_RET_TIME(9, 0, 9, 10, 24),
/* 0x028 */ SCHEDULE_CMD_RET_TIME(6, 0, 9, 0, 6),
/* 0x02E */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x07B - 0x032),
/* 0x032 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 10, 9, 15, 0x075 - 0x038),
/* 0x038 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 15, 10, 0, 0x06F - 0x03E),
/* 0x03E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 10, 5, 0x069 - 0x044),
/* 0x044 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 15, 12, 20, 0x063 - 0x04A),
/* 0x04A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 20, 12, 50, 0x05D - 0x050),
/* 0x050 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 50, 12, 55, 0x057 - 0x056),
/* 0x056 */ SCHEDULE_CMD_RET_NONE(),
/* 0x057 */ SCHEDULE_CMD_RET_TIME(12, 50, 12, 55, 12),
/* 0x05D */ SCHEDULE_CMD_RET_TIME(12, 20, 12, 50, 22),
/* 0x063 */ SCHEDULE_CMD_RET_TIME(12, 15, 12, 20, 11),
/* 0x069 */ SCHEDULE_CMD_RET_TIME(10, 0, 10, 5, 10),
/* 0x06F */ SCHEDULE_CMD_RET_TIME(9, 15, 10, 0, 21),
/* 0x075 */ SCHEDULE_CMD_RET_TIME(9, 10, 9, 15, 9),
/* 0x07B */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_L(SCENE_SONCHONOIE, 0x105 - 0x080),
/* 0x080 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 10, 5, 0x0FF - 0x086),
/* 0x086 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 5, 10, 10, 0x0F9 - 0x08C),
/* 0x08C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 10, 10, 30, 0x0F3 - 0x092),
/* 0x092 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 30, 10, 40, 0x0ED - 0x098),
/* 0x098 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 40, 10, 45, 0x0E7 - 0x09E),
/* 0x09E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 45, 10, 55, 0x0E1 - 0x0A4),
/* 0x0A4 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 55, 11, 45, 0x0DB - 0x0AA),
/* 0x0AA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 45, 11, 55, 0x0D5 - 0x0B0),
/* 0x0B0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 55, 12, 0, 0x0CF - 0x0B6),
/* 0x0B6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 0, 12, 15, 0x0C9 - 0x0BC),
/* 0x0BC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 15, 12, 20, 0x0C3 - 0x0C2),
/* 0x0C2 */ SCHEDULE_CMD_RET_NONE(),
/* 0x0C3 */ SCHEDULE_CMD_RET_TIME(12, 15, 12, 20, 17),
/* 0x0C9 */ SCHEDULE_CMD_RET_TIME(12, 0, 12, 15, 29),
/* 0x0CF */ SCHEDULE_CMD_RET_TIME(11, 55, 12, 0, 19),
/* 0x0D5 */ SCHEDULE_CMD_RET_TIME(11, 45, 11, 55, 28),
/* 0x0DB */ SCHEDULE_CMD_RET_TIME(10, 55, 11, 45, 2),
/* 0x0E1 */ SCHEDULE_CMD_RET_TIME(10, 45, 10, 55, 27),
/* 0x0E7 */ SCHEDULE_CMD_RET_TIME(10, 40, 10, 45, 18),
/* 0x0ED */ SCHEDULE_CMD_RET_TIME(10, 30, 10, 40, 26),
/* 0x0F3 */ SCHEDULE_CMD_RET_TIME(10, 10, 10, 30, 1),
/* 0x0F9 */ SCHEDULE_CMD_RET_TIME(10, 5, 10, 10, 25),
/* 0x0FF */ SCHEDULE_CMD_RET_TIME(10, 0, 10, 5, 16),
/* 0x105 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0x13A - 0x109),
/* 0x109 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 55, 13, 0, 0x134 - 0x10F),
/* 0x10F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 0, 13, 25, 0x12E - 0x115),
/* 0x115 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 25, 21, 5, 0x128 - 0x11B),
/* 0x11B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 55, 5, 5, 0x122 - 0x121),
/* 0x121 */ SCHEDULE_CMD_RET_NONE(),
/* 0x122 */ SCHEDULE_CMD_RET_TIME(21, 55, 5, 5, 5),
/* 0x128 */ SCHEDULE_CMD_RET_TIME(13, 25, 21, 5, 3),
/* 0x12E */ SCHEDULE_CMD_RET_TIME(13, 0, 13, 25, 30),
/* 0x134 */ SCHEDULE_CMD_RET_TIME(12, 55, 13, 0, 20),
/* 0x13A */ SCHEDULE_CMD_RET_NONE(),
/* 0x13B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(2, 0x1EB - 0x140),
/* 0x140 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_50_01, 0x1CD - 0x145),
/* 0x145 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x17A - 0x149),
/* 0x149 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 18, 0, 0x174 - 0x14F),
/* 0x14F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 21, 0, 0x16E - 0x155),
/* 0x155 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 21, 10, 0x168 - 0x15B),
/* 0x15B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 10, 21, 15, 0x162 - 0x161),
/* 0x161 */ SCHEDULE_CMD_RET_NONE(),
/* 0x162 */ SCHEDULE_CMD_RET_TIME(21, 10, 21, 15, 15),
/* 0x168 */ SCHEDULE_CMD_RET_TIME(21, 0, 21, 10, 24),
/* 0x16E */ SCHEDULE_CMD_RET_TIME(18, 0, 21, 0, 6),
/* 0x174 */ SCHEDULE_CMD_RET_TIME(6, 0, 18, 0, 7),
/* 0x17A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x1A3 - 0x17E),
/* 0x17E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 10, 21, 15, 0x19D - 0x184),
/* 0x184 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 15, 21, 25, 0x197 - 0x18A),
/* 0x18A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 25, 21, 30, 0x191 - 0x190),
/* 0x190 */ SCHEDULE_CMD_RET_NONE(),
/* 0x191 */ SCHEDULE_CMD_RET_TIME(21, 25, 21, 30, 14),
/* 0x197 */ SCHEDULE_CMD_RET_TIME(21, 15, 21, 25, 23),
/* 0x19D */ SCHEDULE_CMD_RET_TIME(21, 10, 21, 15, 13),
/* 0x1A3 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0x1CC - 0x1A7),
/* 0x1A7 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 30, 21, 45, 0x1C6 - 0x1AD),
/* 0x1AD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 45, 22, 10, 0x1C0 - 0x1B3),
/* 0x1B3 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(22, 10, 6, 0, 0x1BA - 0x1B9),
/* 0x1B9 */ SCHEDULE_CMD_RET_NONE(),
/* 0x1BA */ SCHEDULE_CMD_RET_TIME(22, 10, 6, 0, 5),
/* 0x1C0 */ SCHEDULE_CMD_RET_TIME(21, 45, 22, 10, 30),
/* 0x1C6 */ SCHEDULE_CMD_RET_TIME(21, 30, 21, 45, 20),
/* 0x1CC */ SCHEDULE_CMD_RET_NONE(),
/* 0x1CD */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x1EA - 0x1D1),
/* 0x1D1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 18, 0, 0x1E4 - 0x1D7),
/* 0x1D7 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x1DE - 0x1DD),
/* 0x1DD */ SCHEDULE_CMD_RET_NONE(),
/* 0x1DE */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 0, 8),
/* 0x1E4 */ SCHEDULE_CMD_RET_TIME(6, 0, 18, 0, 7),
/* 0x1EA */ SCHEDULE_CMD_RET_NONE(),
/* 0x1EB */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Gm/scheduleScripts.schl.inc"
static s32 D_80951A0C[] = {
-1, 1, 4, 1, -1, 1, -1, -1, -1, 0, 2, 3, 5, 6, 8, 1, 0, 8, 3, 6, 0, 1, 4, 7, 0, 1, 2, 4, 5, 7, 1,

View File

@ -0,0 +1,51 @@
D_80BF3260 {
if_day (1) {
if_scene (SCENE_TOWN) {
if_time_range (15, 25, 15, 45) {
return_time (15, 25, 15, 45, 10)
} else if_time_range (15, 45, 15, 50) {
return_time (15, 45, 15, 50, 5)
} else if_week_event_reg (WEEKEVENTREG_RECEIVED_ROOM_KEY) {
if_time_range (16, 50, 16, 55) {
return_time (16, 50, 16, 55, 6)
} else if_time_range (16, 55, 17, 15) {
return_time (16, 55, 17, 15, 11)
} else if_time_range (17, 15, 18, 0) {
return_time (17, 15, 6, 0, 2)
} else if_time_range (18, 0, 6, 0) {
return_time (18, 0, 6, 0, 4)
} else {
return_none
}
} else {
return_none
}
} else if_scene (SCENE_YADOYA) {
if_time_range (15, 45, 15, 50) {
return_time (15, 45, 15, 50, 7)
} else if_time_range (15, 50, 16, 10) {
return_time (15, 50, 16, 10, 12)
} else if_time_range (16, 10, 16, 30) {
return_time (16, 10, 16, 30, 3)
} else if_week_event_reg (WEEKEVENTREG_RECEIVED_ROOM_KEY) {
if_time_range (16, 30, 16, 50) {
return_time (16, 30, 16, 50, 14)
} else if_time_range (16, 50, 16, 55) {
return_time (16, 50, 16, 55, 9)
} else {
return_none
}
} else if_time_range (16, 30, 16, 50) {
return_time (16, 30, 16, 50, 13)
} else if_time_range (16, 50, 16, 55) {
return_time (16, 50, 16, 55, 8)
} else {
return_none
}
} else {
return_none
}
} else {
return_none
}
}

View File

@ -19,45 +19,7 @@ void EnIg_Draw(Actor* thisx, PlayState* play);
void func_80BF2AF8(EnIg* this, PlayState* play);
void func_80BF2BD4(EnIg* this, PlayState* play);
static u8 D_80BF3260[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(1, 0xB6 - 0x05),
/* 0x05 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x57 - 0x09),
/* 0x09 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 25, 15, 45, 0x51 - 0x0F),
/* 0x0F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 45, 15, 50, 0x4B - 0x15),
/* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_RECEIVED_ROOM_KEY, 0x1A - 0x19),
/* 0x19 */ SCHEDULE_CMD_RET_NONE(),
/* 0x1A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 50, 16, 55, 0x45 - 0x20),
/* 0x20 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 55, 17, 15, 0x3F - 0x26),
/* 0x26 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(17, 15, 18, 0, 0x39 - 0x2C),
/* 0x2C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x33 - 0x32),
/* 0x32 */ SCHEDULE_CMD_RET_NONE(),
/* 0x33 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 4),
/* 0x39 */ SCHEDULE_CMD_RET_TIME(17, 15, 6, 0, 2),
/* 0x3F */ SCHEDULE_CMD_RET_TIME(16, 55, 17, 15, 11),
/* 0x45 */ SCHEDULE_CMD_RET_TIME(16, 50, 16, 55, 6),
/* 0x4B */ SCHEDULE_CMD_RET_TIME(15, 45, 15, 50, 5),
/* 0x51 */ SCHEDULE_CMD_RET_TIME(15, 25, 15, 45, 10),
/* 0x57 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0xB5 - 0x5B),
/* 0x5B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 45, 15, 50, 0xAF - 0x61),
/* 0x61 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 50, 16, 10, 0xA9 - 0x67),
/* 0x67 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 10, 16, 30, 0xA3 - 0x6D),
/* 0x6D */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_RECEIVED_ROOM_KEY, 0x8A - 0x71),
/* 0x71 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 30, 16, 50, 0x84 - 0x77),
/* 0x77 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 50, 16, 55, 0x7E - 0x7D),
/* 0x7D */ SCHEDULE_CMD_RET_NONE(),
/* 0x7E */ SCHEDULE_CMD_RET_TIME(16, 50, 16, 55, 8),
/* 0x84 */ SCHEDULE_CMD_RET_TIME(16, 30, 16, 50, 13),
/* 0x8A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 30, 16, 50, 0x9D - 0x90),
/* 0x90 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 50, 16, 55, 0x97 - 0x96),
/* 0x96 */ SCHEDULE_CMD_RET_NONE(),
/* 0x97 */ SCHEDULE_CMD_RET_TIME(16, 50, 16, 55, 9),
/* 0x9D */ SCHEDULE_CMD_RET_TIME(16, 30, 16, 50, 14),
/* 0xA3 */ SCHEDULE_CMD_RET_TIME(16, 10, 16, 30, 3),
/* 0xA9 */ SCHEDULE_CMD_RET_TIME(15, 50, 16, 10, 12),
/* 0xAF */ SCHEDULE_CMD_RET_TIME(15, 45, 15, 50, 7),
/* 0xB5 */ SCHEDULE_CMD_RET_NONE(),
/* 0xB6 */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Ig/scheduleScripts.schl.inc"
static s32 D_80BF3318[] = { -1, -1, 3, 1, 3, 1, 2, 0, 3, 5, 0, 3, 1, 2, 4 };

View File

@ -0,0 +1,17 @@
D_80BC35F0 {
if_day (3) {
return_none
} else if_time_range (6, 0, 18, 0) {
if_scene (SCENE_TOWN) {
return_l (1)
} else {
return_none
}
} else {
if_scene (SCENE_YADOYA) {
return_l (2)
} else {
return_none
}
}
}

View File

@ -21,17 +21,7 @@ void func_80BC2EA4(EnJa* this);
void func_80BC32D8(EnJa* this, PlayState* play);
void func_80BC3594(EnJa* this, PlayState* play);
static u8 D_80BC35F0[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x05 - 0x04),
/* 0x04 */ SCHEDULE_CMD_RET_NONE(),
/* 0x05 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 18, 0, 0x13 - 0x0B),
/* 0x0B */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x12 - 0x0F),
/* 0x0F */ SCHEDULE_CMD_RET_VAL_L(2),
/* 0x12 */ SCHEDULE_CMD_RET_NONE(),
/* 0x13 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x1A - 0x17),
/* 0x17 */ SCHEDULE_CMD_RET_VAL_L(1),
/* 0x1A */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Ja/scheduleScripts.schl.inc"
s32 D_80BC360C[] = {
0x0E29370C, 0x170E2938, 0x0C180E29, 0x390C170E, 0x293A0C09, 0x0000180E, 0x293B0C09, 0x00001000,

View File

@ -0,0 +1,51 @@
sScheduleScript {
if_day (3) {
if_scene (SCENE_YADOYA) {
if_time_range (6, 0, 18, 0) {
return_l (EN_NB_SCH_3)
} else {
return_none
}
} else if_scene (SCENE_OMOYA) {
if_time_range (18, 0, 6, 0) {
return_l (EN_NB_SCH_4)
} else {
return_none
}
} else {
return_none
}
} else {
if_scene (SCENE_YADOYA) {
if_day (1) {
if_time_range (8, 0, 12, 0) {
return_l (EN_NB_SCH_1)
} else if_time_range (12, 0, 12, 15) {
return_l (EN_NB_SCH_2)
} else if_time_range (12, 15, 18, 0) {
return_l (EN_NB_SCH_1)
} else {
return_l (EN_NB_SCH_3)
}
} else {
if_week_event_reg (WEEKEVENTREG_HAD_MIDNIGHT_MEETING) {
if_time_range (8, 0, 12, 0) {
return_s (EN_NB_SCH_1)
} else if_time_range (12, 0, 12, 15) {
return_s (EN_NB_SCH_2)
} else if_time_range (12, 15, 18, 0) {
return_s (EN_NB_SCH_1)
} else {
return_l (EN_NB_SCH_3)
}
} else if_time_range (8, 0, 18, 0) {
return_l (EN_NB_SCH_1)
} else {
return_l (EN_NB_SCH_3)
}
}
} else {
return_none
}
}
}

View File

@ -36,39 +36,7 @@ typedef enum EnNbScheduleResult {
/* 4 */ EN_NB_SCH_4
} EnNbScheduleResult;
static u8 sScheduleScript[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x21 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x12 - 0x08),
/* 0x08 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 18, 0, 0x0F - 0x0E),
/* 0x0E */ SCHEDULE_CMD_RET_NONE(),
/* 0x0F */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_3),
/* 0x12 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_OMOYA, 0x20 - 0x16),
/* 0x16 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x1D - 0x1C),
/* 0x1C */ SCHEDULE_CMD_RET_NONE(),
/* 0x1D */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_4),
/* 0x20 */ SCHEDULE_CMD_RET_NONE(),
/* 0x21 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x72 - 0x25),
/* 0x25 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0x47 - 0x29),
/* 0x29 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(8, 0, 12, 0, 0x44 - 0x2F),
/* 0x2F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 0, 12, 15, 0x41 - 0x35),
/* 0x35 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 15, 18, 0, 0x3E - 0x3B),
/* 0x3B */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_3),
/* 0x3E */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_1),
/* 0x41 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_2),
/* 0x44 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_1),
/* 0x47 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_HAD_MIDNIGHT_MEETING, 0x57 - 0x4B),
/* 0x4B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(8, 0, 18, 0, 0x54 - 0x51),
/* 0x51 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_3),
/* 0x54 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_1),
/* 0x57 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(8, 0, 12, 0, 0x70 - 0x5D),
/* 0x5D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 0, 12, 15, 0x6E - 0x63),
/* 0x63 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 15, 18, 0, 0x6C - 0x69),
/* 0x69 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_3),
/* 0x6C */ SCHEDULE_CMD_RET_VAL_S(EN_NB_SCH_1),
/* 0x6E */ SCHEDULE_CMD_RET_VAL_S(EN_NB_SCH_2),
/* 0x70 */ SCHEDULE_CMD_RET_VAL_S(EN_NB_SCH_1),
/* 0x72 */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Nb/scheduleScripts.schl.inc"
u8 D_80BC1464[] = {
0x1B, 0x04, 0x08, 0x00, 0x6A, 0x0A, 0x00, 0x10, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x0E,

View File

@ -0,0 +1,482 @@
D_80AFAD80 {
if_day (1) {
if_time_range (9, 0, 12, 0) {
label_0x117:
if_scene (SCENE_ICHIBA) {
if_time_range (9, 0, 9, 3) {
return_time (9, 0, 9, 3, 1)
} else if_time_range (9, 3, 9, 17) {
return_time (9, 3, 9, 17, 38)
} else if_time_range (11, 43, 11, 57) {
return_time (11, 43, 11, 57, 52)
} else if_time_range (11, 57, 12, 0) {
return_time (11, 57, 12, 0, 2)
} else {
return_none
}
} else if_scene (SCENE_CLOCKTOWER) {
if_time_range (9, 3, 9, 17) {
return_time (9, 3, 9, 17, 39)
} else if_time_range (9, 17, 9, 31) {
return_time (9, 17, 9, 31, 40)
} else if_time_range (9, 31, 9, 35) {
return_time (9, 31, 9, 35, 3)
} else if_time_range (9, 35, 9, 49) {
return_time (9, 35, 9, 49, 41)
} else if_time_range (10, 57, 11, 11) {
return_time (10, 57, 11, 11, 47)
} else if_time_range (11, 11, 11, 25) {
return_time (11, 11, 11, 25, 48)
} else if_time_range (11, 25, 11, 29) {
return_time (11, 25, 11, 29, 7)
} else if_time_range (11, 29, 11, 43) {
return_time (11, 29, 11, 43, 50)
} else {
return_none
}
} else if_scene (SCENE_BACKTOWN) {
if_time_range (9, 49, 10, 3) {
return_time (9, 49, 10, 3, 42)
} else if_time_range (10, 3, 10, 7) {
return_time (10, 3, 10, 7, 4)
} else if_time_range (10, 7, 10, 21) {
return_time (10, 7, 10, 21, 43)
} else {
return_none
}
} else if_scene (SCENE_TOWN) {
if_time_range (10, 21, 10, 35) {
return_time (10, 21, 10, 35, 44)
} else if_time_range (10, 35, 10, 39) {
return_time (10, 35, 10, 39, 5)
} else if_time_range (10, 39, 10, 53) {
return_time (10, 39, 10, 53, 45)
} else if_time_range (10, 53, 10, 57) {
return_time (10, 53, 10, 57, 6)
} else if_time_range (10, 57, 11, 11) {
return_time (10, 57, 11, 11, 46)
} else if_time_range (11, 11, 11, 25) {
return_time (11, 11, 11, 25, 49)
} else if_time_range (11, 25, 11, 29) {
return_time (11, 25, 11, 29, 7)
} else if_time_range (11, 29, 11, 43) {
return_time (11, 29, 11, 43, 51)
} else {
return_none
}
} else {
return_none
}
} else if_time_range (12, 0, 13, 1) {
if_scene (SCENE_POSTHOUSE) {
return_time (12, 0, 13, 1, 9)
} else {
return_none
}
} else if_time_range (13, 1, 15, 0) {
if_scene (SCENE_ICHIBA) {
if_time_range (13, 1, 13, 4) {
return_time (13, 1, 13, 4, 1)
} else if_time_range (13, 4, 13, 21) {
return_time (13, 4, 13, 21, 53)
} else if_time_range (14, 48, 14, 56) {
return_time (14, 48, 14, 56, 62)
} else if_time_range (14, 56, 15, 0) {
return_time (14, 56, 15, 0, 2)
} else {
return_none
}
} else if_scene (SCENE_CLOCKTOWER) {
if_time_range (13, 4, 13, 21) {
return_time (13, 4, 13, 21, 54)
} else if_time_range (13, 21, 13, 39) {
return_time (13, 21, 13, 39, 55)
} else if_time_range (14, 38, 14, 48) {
return_time (14, 38, 14, 48, 60)
} else if_time_range (14, 48, 14, 56) {
return_time (14, 48, 14, 56, 61)
} else {
return_none
}
} else if_scene (SCENE_TOWN) {
if_time_range (13, 39, 13, 56) {
return_time (13, 39, 13, 56, 56)
} else if_time_range (13, 56, 14, 0) {
return_time (13, 56, 14, 0, 10)
} else if_time_range (14, 26, 14, 30) {
return_time (14, 26, 14, 30, 11)
} else if_time_range (14, 30, 14, 38) {
return_time (14, 30, 14, 38, 59)
} else {
return_none
}
} else if_scene (SCENE_YADOYA) {
if_time_range (13, 56, 14, 0) {
return_time (13, 56, 14, 0, 12)
} else if_time_range (14, 0, 14, 8) {
return_time (14, 0, 14, 8, 57)
} else if_time_range (14, 8, 14, 18) {
return_time (14, 8, 14, 18, 16)
} else if_time_range (14, 18, 14, 26) {
return_time (14, 18, 14, 26, 58)
} else if_time_range (14, 26, 14, 30) {
return_time (14, 26, 14, 30, 13)
} else {
return_none
}
} else {
return_none
}
} else if_time_range (15, 0, 0, 5) {
if_scene (SCENE_POSTHOUSE) {
return_time (15, 0, 0, 5, 8)
} else {
return_none
}
} else {
return_none
}
} else if_day (2) {
if_week_event_reg (WEEKEVENTREG_28_08) {
if_time_range (9, 0, 12, 0) {
branch (label_0x117)
} else if_time_range (12, 0, 13, 1) {
if_scene (SCENE_POSTHOUSE) {
return_time (12, 0, 13, 1, 21)
} else {
return_none
}
} else if_time_range (13, 1, 17, 0) {
label_0x315:
if_scene (SCENE_ICHIBA) {
if_time_range (13, 1, 13, 4) {
return_time (13, 1, 13, 4, 1)
} else if_time_range (13, 4, 13, 15) {
return_time (13, 4, 13, 15, 63)
} else if_time_range (16, 35, 16, 57) {
return_time (16, 35, 16, 57, 73)
} else if_time_range (16, 57, 17, 0) {
return_time (16, 57, 17, 0, 2)
} else {
return_none
}
} else if_scene (SCENE_CLOCKTOWER) {
if_time_range (13, 4, 13, 15) {
return_time (13, 4, 13, 15, 64)
} else if_time_range (13, 15, 13, 30) {
return_time (13, 15, 13, 30, 65)
} else if_time_range (13, 52, 14, 45) {
return_time (13, 52, 14, 45, 67)
} else if_time_range (16, 15, 16, 35) {
return_time (16, 15, 16, 35, 72)
} else {
return_none
}
} else if_scene (SCENE_TOWN) {
if_time_range (13, 30, 13, 52) {
return_time (13, 30, 13, 52, 66)
} else if_time_range (13, 52, 14, 50) {
return_time (13, 52, 14, 50, 68)
} else {
return_none
}
} else if_scene (SCENE_ALLEY) {
if_time_range (14, 45, 15, 5) {
return_time (14, 45, 15, 5, 70)
} else if_day (2) {
if_time_range (15, 5, 15, 20) {
return_time (15, 5, 15, 20, 23)
} else if_time_range (15, 20, 15, 25) {
return_time (15, 20, 15, 25, 80)
} else if_time_range (15, 25, 15, 40) {
return_time (15, 25, 15, 40, 17)
} else if_time_range (15, 40, 16, 15) {
return_time (15, 40, 16, 15, 81)
} else {
return_none
}
} else if_time_range (15, 5, 15, 20) {
return_time (15, 5, 15, 20, 23)
} else if_time_range (15, 20, 15, 50) {
return_time (15, 20, 15, 50, 25)
} else if_time_range (15, 50, 16, 15) {
return_time (15, 50, 16, 15, 71)
} else {
return_l (0)
}
} else {
return_none
}
} else if_time_range (17, 0, 0, 5) {
if_scene (SCENE_POSTHOUSE) {
return_time (17, 0, 0, 5, 8)
} else {
return_none
}
} else {
return_none
}
} else if_time_range (9, 0, 12, 0) {
branch (label_0x117)
} else if_time_range (12, 0, 13, 1) {
if_scene (SCENE_POSTHOUSE) {
return_time (12, 0, 13, 1, 20)
} else {
return_none
}
} else if_time_range (13, 1, 15, 0) {
if_scene (SCENE_POSTHOUSE) {
return_l (14)
} else {
return_none
}
} else if_time_range (0, 0, 2, 0) {
if_scene (SCENE_ICHIBA) {
if_time_range (0, 0, 0, 4) {
return_time (0, 0, 0, 4, 1)
} else if_time_range (0, 4, 0, 31) {
return_time (0, 4, 0, 31, 74)
} else if_time_range (1, 29, 1, 56) {
return_time (1, 29, 1, 56, 79)
} else if_time_range (1, 56, 2, 0) {
return_time (1, 56, 2, 0, 2)
} else {
return_none
}
} else if_scene (SCENE_CLOCKTOWER) {
if_time_range (0, 4, 0, 31) {
return_time (0, 4, 0, 31, 75)
} else if_time_range (0, 31, 0, 58) {
return_time (0, 31, 0, 58, 76)
} else if_time_range (0, 58, 1, 2) {
return_time (0, 58, 1, 2, 18)
} else if_time_range (1, 2, 1, 29) {
return_time (1, 2, 1, 29, 77)
} else if_time_range (1, 29, 1, 56) {
return_time (1, 29, 1, 56, 78)
} else {
return_none
}
} else {
return_none
}
} else {
return_none
}
} else if_day (3) {
if_week_event_reg (WEEKEVENTREG_28_08) {
if_time_range (9, 0, 12, 0) {
branch (label_0x117)
} else if_time_range (12, 0, 13, 1) {
if_scene (SCENE_POSTHOUSE) {
return_l (20)
} else {
return_none
}
} else if_time_range (13, 1, 15, 0) {
branch (label_0x446)
} else if_time_range (18, 0, 6, 0) {
if_scene (SCENE_POSTHOUSE) {
return_l (24)
} else {
return_none
}
} else {
return_none
}
} else if_week_event_reg (WEEKEVENTREG_28_10) {
if_time_range (9, 0, 12, 0) {
branch (label_0x117)
} else if_time_range (12, 0, 13, 1) {
if_scene (SCENE_POSTHOUSE) {
return_time (12, 0, 13, 1, 21)
} else {
return_none
}
} else if_time_range (13, 1, 17, 0) {
branch (label_0x315)
} else if_time_range (18, 0, 6, 0) {
if_scene (SCENE_POSTHOUSE) {
return_l (24)
} else {
return_none
}
} else {
return_none
}
} else if_time_range (9, 0, 12, 0) {
branch (label_0x117)
} else if_time_range (12, 0, 13, 1) {
if_scene (SCENE_POSTHOUSE) {
return_l (22)
} else {
return_none
}
} else if_time_range (13, 1, 15, 0) {
label_0x446:
if_scene (SCENE_ICHIBA) {
if_time_range (13, 0, 13, 1) {
return_time (13, 0, 13, 1, 1)
} else if_time_range (13, 5, 13, 15) {
return_time (13, 5, 13, 15, 38)
} else if_time_range (14, 45, 14, 55) {
return_time (14, 45, 14, 55, 52)
} else if_time_range (14, 55, 15, 0) {
return_time (14, 55, 15, 0, 2)
} else {
return_none
}
} else if_scene (SCENE_CLOCKTOWER) {
if_time_range (13, 5, 13, 15) {
return_time (13, 5, 13, 15, 39)
} else if_time_range (13, 15, 13, 25) {
return_time (13, 15, 13, 25, 40)
} else if_time_range (13, 25, 13, 35) {
return_time (13, 25, 13, 35, 41)
} else if_time_range (14, 15, 14, 25) {
return_time (14, 15, 14, 25, 47)
} else if_time_range (14, 25, 14, 35) {
return_time (14, 25, 14, 35, 48)
} else if_time_range (14, 35, 14, 45) {
return_time (14, 35, 14, 45, 50)
} else {
return_none
}
} else if_scene (SCENE_BACKTOWN) {
if_time_range (13, 35, 13, 45) {
return_time (13, 35, 13, 45, 42)
} else if_time_range (13, 45, 13, 55) {
return_time (13, 45, 13, 55, 43)
} else {
return_none
}
} else if_scene (SCENE_TOWN) {
if_time_range (13, 55, 14, 5) {
return_time (13, 55, 14, 5, 44)
} else if_time_range (14, 5, 14, 15) {
return_time (14, 5, 14, 15, 45)
} else if_time_range (14, 15, 14, 25) {
return_time (14, 15, 14, 25, 46)
} else if_time_range (14, 25, 14, 35) {
return_time (14, 25, 14, 35, 49)
} else if_time_range (14, 35, 14, 45) {
return_time (14, 35, 14, 45, 51)
} else {
return_none
}
} else {
return_none
}
} else if_time_range (18, 0, 6, 0) {
if_scene (SCENE_POSTHOUSE) {
return_l (24)
} else {
return_none
}
} else {
return_none
}
} else {
return_none
}
}
D_80AFB30C {
if_scene (SCENE_POSTHOUSE) {
if_time_range (0, 0, 0, 10) {
return_time (0, 0, 0, 10, 82)
} else if_time_range (0, 10, 0, 13) {
return_l (27)
} else if_time_range (0, 13, 0, 23) {
return_time (0, 13, 0, 23, 83)
} else if_time_range (0, 23, 0, 26) {
return_time (0, 23, 0, 26, 32)
} else {
return_none
}
} else if_scene (SCENE_ICHIBA) {
if_time_range (0, 23, 0, 26) {
return_time (0, 23, 0, 26, 33)
} else if_time_range (0, 26, 0, 36) {
return_time (0, 26, 0, 36, 84)
} else {
return_none
}
} else if_scene (SCENE_CLOCKTOWER) {
if_time_range (0, 26, 0, 36) {
return_time (0, 26, 0, 36, 85)
} else if_time_range (0, 36, 0, 46) {
return_time (0, 36, 0, 46, 86)
} else {
return_none
}
} else if_scene (SCENE_TOWN) {
if_time_range (0, 46, 0, 56) {
return_time (0, 46, 0, 56, 87)
} else if_time_range (0, 56, 0, 59) {
return_time (0, 56, 0, 59, 34)
} else {
return_none
}
} else if_scene (SCENE_MILK_BAR) {
if_time_range (0, 56, 0, 59) {
return_time (0, 56, 0, 59, 36)
} else if_time_range (0, 59, 1, 9) {
return_time (0, 59, 1, 9, 88)
} else if_time_range (1, 9, 1, 40) {
return_time (1, 9, 1, 40, 28)
} else {
return_none
}
} else {
return_none
}
}
D_80AFB3C0 {
if_scene (SCENE_TOWN) {
if_time_range (0, 10, 0, 13) {
return_time (0, 10, 0, 13, 35)
} else if_time_range (0, 13, 0, 23) {
return_time (0, 13, 0, 23, 90)
} else {
return_none
}
} else if_scene (SCENE_MILK_BAR) {
if_time_range (0, 0, 0, 10) {
return_time (0, 0, 0, 10, 89)
} else if_time_range (0, 10, 0, 13) {
return_time (0, 10, 0, 13, 37)
} else {
return_none
}
} else {
return_none
}
}
D_80AFB3FC {
if_scene (SCENE_TOWN) {
if_time_range (18, 0, 6, 0) {
return_time (18, 0, 6, 0, 29)
} else if_time_range (5, 0, 5, 10) {
return_time (5, 0, 5, 10, 91)
} else {
return_none
}
} else {
return_none
}
}
D_80AFB41C {
if_scene (SCENE_TOWN) {
if_time_range (0, 0, 0, 10) {
return_time (0, 0, 0, 10, 91)
} else {
return_none
}
} else {
return_none
}
}

View File

@ -20,366 +20,7 @@ void EnPm_Draw(Actor* thisx, PlayState* play);
void func_80AFA4D0(EnPm* this, PlayState* play);
void func_80AFA5FC(EnPm* this, PlayState* play);
static u8 D_80AFAD80[] = {
/* 0x000 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(1, 0x240 - 0x005),
/* 0x005 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x00C),
/* 0x00C */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 13, 1, 0x10C - 0x013),
/* 0x013 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 15, 0, 0x02B - 0x019),
/* 0x019 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 0, 0, 5, 0x020 - 0x01F),
/* 0x01F */ SCHEDULE_CMD_RET_NONE(),
/* 0x020 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x02A - 0x024),
/* 0x024 */ SCHEDULE_CMD_RET_TIME(15, 0, 0, 5, 8),
/* 0x02A */ SCHEDULE_CMD_RET_NONE(),
/* 0x02B */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x060 - 0x02F),
/* 0x02F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 13, 4, 0x05A - 0x035),
/* 0x035 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 4, 13, 21, 0x054 - 0x03B),
/* 0x03B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 48, 14, 56, 0x04E - 0x041),
/* 0x041 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 56, 15, 0, 0x048 - 0x047),
/* 0x047 */ SCHEDULE_CMD_RET_NONE(),
/* 0x048 */ SCHEDULE_CMD_RET_TIME(14, 56, 15, 0, 2),
/* 0x04E */ SCHEDULE_CMD_RET_TIME(14, 48, 14, 56, 62),
/* 0x054 */ SCHEDULE_CMD_RET_TIME(13, 4, 13, 21, 53),
/* 0x05A */ SCHEDULE_CMD_RET_TIME(13, 1, 13, 4, 1),
/* 0x060 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x095 - 0x064),
/* 0x064 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 4, 13, 21, 0x08F - 0x06A),
/* 0x06A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 21, 13, 39, 0x089 - 0x070),
/* 0x070 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 38, 14, 48, 0x083 - 0x076),
/* 0x076 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 48, 14, 56, 0x07D - 0x07C),
/* 0x07C */ SCHEDULE_CMD_RET_NONE(),
/* 0x07D */ SCHEDULE_CMD_RET_TIME(14, 48, 14, 56, 61),
/* 0x083 */ SCHEDULE_CMD_RET_TIME(14, 38, 14, 48, 60),
/* 0x089 */ SCHEDULE_CMD_RET_TIME(13, 21, 13, 39, 55),
/* 0x08F */ SCHEDULE_CMD_RET_TIME(13, 4, 13, 21, 54),
/* 0x095 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x0CA - 0x099),
/* 0x099 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 39, 13, 56, 0x0C4 - 0x09F),
/* 0x09F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 56, 14, 0, 0x0BE - 0x0A5),
/* 0x0A5 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 26, 14, 30, 0x0B8 - 0x0AB),
/* 0x0AB */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 30, 14, 38, 0x0B2 - 0x0B1),
/* 0x0B1 */ SCHEDULE_CMD_RET_NONE(),
/* 0x0B2 */ SCHEDULE_CMD_RET_TIME(14, 30, 14, 38, 59),
/* 0x0B8 */ SCHEDULE_CMD_RET_TIME(14, 26, 14, 30, 11),
/* 0x0BE */ SCHEDULE_CMD_RET_TIME(13, 56, 14, 0, 10),
/* 0x0C4 */ SCHEDULE_CMD_RET_TIME(13, 39, 13, 56, 56),
/* 0x0CA */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x10B - 0x0CE),
/* 0x0CE */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 56, 14, 0, 0x105 - 0x0D4),
/* 0x0D4 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 0, 14, 8, 0x0FF - 0x0DA),
/* 0x0DA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 8, 14, 18, 0x0F9 - 0x0E0),
/* 0x0E0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 18, 14, 26, 0x0F3 - 0x0E6),
/* 0x0E6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 26, 14, 30, 0x0ED - 0x0EC),
/* 0x0EC */ SCHEDULE_CMD_RET_NONE(),
/* 0x0ED */ SCHEDULE_CMD_RET_TIME(14, 26, 14, 30, 13),
/* 0x0F3 */ SCHEDULE_CMD_RET_TIME(14, 18, 14, 26, 58),
/* 0x0F9 */ SCHEDULE_CMD_RET_TIME(14, 8, 14, 18, 16),
/* 0x0FF */ SCHEDULE_CMD_RET_TIME(14, 0, 14, 8, 57),
/* 0x105 */ SCHEDULE_CMD_RET_TIME(13, 56, 14, 0, 12),
/* 0x10B */ SCHEDULE_CMD_RET_NONE(),
/* 0x10C */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x116 - 0x110),
/* 0x110 */ SCHEDULE_CMD_RET_TIME(12, 0, 13, 1, 9),
/* 0x116 */ SCHEDULE_CMD_RET_NONE(),
/* 0x117 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x14C - 0x11B),
/* 0x11B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 0, 9, 3, 0x146 - 0x121),
/* 0x121 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 3, 9, 17, 0x140 - 0x127),
/* 0x127 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 43, 11, 57, 0x13A - 0x12D),
/* 0x12D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 57, 12, 0, 0x134 - 0x133),
/* 0x133 */ SCHEDULE_CMD_RET_NONE(),
/* 0x134 */ SCHEDULE_CMD_RET_TIME(11, 57, 12, 0, 2),
/* 0x13A */ SCHEDULE_CMD_RET_TIME(11, 43, 11, 57, 52),
/* 0x140 */ SCHEDULE_CMD_RET_TIME(9, 3, 9, 17, 38),
/* 0x146 */ SCHEDULE_CMD_RET_TIME(9, 0, 9, 3, 1),
/* 0x14C */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x1B1 - 0x150),
/* 0x150 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 3, 9, 17, 0x1AB - 0x156),
/* 0x156 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 17, 9, 31, 0x1A5 - 0x15C),
/* 0x15C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 31, 9, 35, 0x19F - 0x162),
/* 0x162 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 35, 9, 49, 0x199 - 0x168),
/* 0x168 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 57, 11, 11, 0x193 - 0x16E),
/* 0x16E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 11, 11, 25, 0x18D - 0x174),
/* 0x174 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 25, 11, 29, 0x187 - 0x17A),
/* 0x17A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 29, 11, 43, 0x181 - 0x180),
/* 0x180 */ SCHEDULE_CMD_RET_NONE(),
/* 0x181 */ SCHEDULE_CMD_RET_TIME(11, 29, 11, 43, 50),
/* 0x187 */ SCHEDULE_CMD_RET_TIME(11, 25, 11, 29, 7),
/* 0x18D */ SCHEDULE_CMD_RET_TIME(11, 11, 11, 25, 48),
/* 0x193 */ SCHEDULE_CMD_RET_TIME(10, 57, 11, 11, 47),
/* 0x199 */ SCHEDULE_CMD_RET_TIME(9, 35, 9, 49, 41),
/* 0x19F */ SCHEDULE_CMD_RET_TIME(9, 31, 9, 35, 3),
/* 0x1A5 */ SCHEDULE_CMD_RET_TIME(9, 17, 9, 31, 40),
/* 0x1AB */ SCHEDULE_CMD_RET_TIME(9, 3, 9, 17, 39),
/* 0x1B1 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_BACKTOWN, 0x1DA - 0x1B5),
/* 0x1B5 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 49, 10, 3, 0x1D4 - 0x1BB),
/* 0x1BB */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 3, 10, 7, 0x1CE - 0x1C1),
/* 0x1C1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 7, 10, 21, 0x1C8 - 0x1C7),
/* 0x1C7 */ SCHEDULE_CMD_RET_NONE(),
/* 0x1C8 */ SCHEDULE_CMD_RET_TIME(10, 7, 10, 21, 43),
/* 0x1CE */ SCHEDULE_CMD_RET_TIME(10, 3, 10, 7, 4),
/* 0x1D4 */ SCHEDULE_CMD_RET_TIME(9, 49, 10, 3, 42),
/* 0x1DA */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x23F - 0x1DE),
/* 0x1DE */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 21, 10, 35, 0x239 - 0x1E4),
/* 0x1E4 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 35, 10, 39, 0x233 - 0x1EA),
/* 0x1EA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 39, 10, 53, 0x22D - 0x1F0),
/* 0x1F0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 53, 10, 57, 0x227 - 0x1F6),
/* 0x1F6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 57, 11, 11, 0x221 - 0x1FC),
/* 0x1FC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 11, 11, 25, 0x21B - 0x202),
/* 0x202 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 25, 11, 29, 0x215 - 0x208),
/* 0x208 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 29, 11, 43, 0x20F - 0x20E),
/* 0x20E */ SCHEDULE_CMD_RET_NONE(),
/* 0x20F */ SCHEDULE_CMD_RET_TIME(11, 29, 11, 43, 51),
/* 0x215 */ SCHEDULE_CMD_RET_TIME(11, 25, 11, 29, 7),
/* 0x21B */ SCHEDULE_CMD_RET_TIME(11, 11, 11, 25, 49),
/* 0x221 */ SCHEDULE_CMD_RET_TIME(10, 57, 11, 11, 46),
/* 0x227 */ SCHEDULE_CMD_RET_TIME(10, 53, 10, 57, 6),
/* 0x22D */ SCHEDULE_CMD_RET_TIME(10, 39, 10, 53, 45),
/* 0x233 */ SCHEDULE_CMD_RET_TIME(10, 35, 10, 39, 5),
/* 0x239 */ SCHEDULE_CMD_RET_TIME(10, 21, 10, 35, 44),
/* 0x23F */ SCHEDULE_CMD_RET_NONE(),
/* 0x240 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(2, 0x414 - 0x245),
/* 0x245 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_28_08, 0x2EF - 0x24A),
/* 0x24A */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x251),
/* 0x251 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 13, 1, 0x2E4 - 0x258),
/* 0x258 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 15, 0, 0x2DC - 0x25E),
/* 0x25E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 2, 0, 0x265 - 0x264),
/* 0x264 */ SCHEDULE_CMD_RET_NONE(),
/* 0x265 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x29A - 0x269),
/* 0x269 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 4, 0x294 - 0x26F),
/* 0x26F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 4, 0, 31, 0x28E - 0x275),
/* 0x275 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 29, 1, 56, 0x288 - 0x27B),
/* 0x27B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 56, 2, 0, 0x282 - 0x281),
/* 0x281 */ SCHEDULE_CMD_RET_NONE(),
/* 0x282 */ SCHEDULE_CMD_RET_TIME(1, 56, 2, 0, 2),
/* 0x288 */ SCHEDULE_CMD_RET_TIME(1, 29, 1, 56, 79),
/* 0x28E */ SCHEDULE_CMD_RET_TIME(0, 4, 0, 31, 74),
/* 0x294 */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 4, 1),
/* 0x29A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x2DB - 0x29E),
/* 0x29E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 4, 0, 31, 0x2D5 - 0x2A4),
/* 0x2A4 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 31, 0, 58, 0x2CF - 0x2AA),
/* 0x2AA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 58, 1, 2, 0x2C9 - 0x2B0),
/* 0x2B0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 2, 1, 29, 0x2C3 - 0x2B6),
/* 0x2B6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 29, 1, 56, 0x2BD - 0x2BC),
/* 0x2BC */ SCHEDULE_CMD_RET_NONE(),
/* 0x2BD */ SCHEDULE_CMD_RET_TIME(1, 29, 1, 56, 78),
/* 0x2C3 */ SCHEDULE_CMD_RET_TIME(1, 2, 1, 29, 77),
/* 0x2C9 */ SCHEDULE_CMD_RET_TIME(0, 58, 1, 2, 18),
/* 0x2CF */ SCHEDULE_CMD_RET_TIME(0, 31, 0, 58, 76),
/* 0x2D5 */ SCHEDULE_CMD_RET_TIME(0, 4, 0, 31, 75),
/* 0x2DB */ SCHEDULE_CMD_RET_NONE(),
/* 0x2DC */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x2E3 - 0x2E0),
/* 0x2E0 */ SCHEDULE_CMD_RET_VAL_L(14),
/* 0x2E3 */ SCHEDULE_CMD_RET_NONE(),
/* 0x2E4 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x2EE - 0x2E8),
/* 0x2E8 */ SCHEDULE_CMD_RET_TIME(12, 0, 13, 1, 20),
/* 0x2EE */ SCHEDULE_CMD_RET_NONE(),
/* 0x2EF */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x2F6),
/* 0x2F6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 13, 1, 0x409 - 0x2FD),
/* 0x2FD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 17, 0, 0x315 - 0x303),
/* 0x303 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(17, 0, 0, 5, 0x30A - 0x309),
/* 0x309 */ SCHEDULE_CMD_RET_NONE(),
/* 0x30A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x314 - 0x30E),
/* 0x30E */ SCHEDULE_CMD_RET_TIME(17, 0, 0, 5, 8),
/* 0x314 */ SCHEDULE_CMD_RET_NONE(),
/* 0x315 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x34A - 0x319),
/* 0x319 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 13, 4, 0x344 - 0x31F),
/* 0x31F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 4, 13, 15, 0x33E - 0x325),
/* 0x325 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 35, 16, 57, 0x338 - 0x32B),
/* 0x32B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 57, 17, 0, 0x332 - 0x331),
/* 0x331 */ SCHEDULE_CMD_RET_NONE(),
/* 0x332 */ SCHEDULE_CMD_RET_TIME(16, 57, 17, 0, 2),
/* 0x338 */ SCHEDULE_CMD_RET_TIME(16, 35, 16, 57, 73),
/* 0x33E */ SCHEDULE_CMD_RET_TIME(13, 4, 13, 15, 63),
/* 0x344 */ SCHEDULE_CMD_RET_TIME(13, 1, 13, 4, 1),
/* 0x34A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x37F - 0x34E),
/* 0x34E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 4, 13, 15, 0x379 - 0x354),
/* 0x354 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 15, 13, 30, 0x373 - 0x35A),
/* 0x35A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 52, 14, 45, 0x36D - 0x360),
/* 0x360 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 15, 16, 35, 0x367 - 0x366),
/* 0x366 */ SCHEDULE_CMD_RET_NONE(),
/* 0x367 */ SCHEDULE_CMD_RET_TIME(16, 15, 16, 35, 72),
/* 0x36D */ SCHEDULE_CMD_RET_TIME(13, 52, 14, 45, 67),
/* 0x373 */ SCHEDULE_CMD_RET_TIME(13, 15, 13, 30, 65),
/* 0x379 */ SCHEDULE_CMD_RET_TIME(13, 4, 13, 15, 64),
/* 0x37F */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x39C - 0x383),
/* 0x383 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 30, 13, 52, 0x396 - 0x389),
/* 0x389 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 52, 14, 50, 0x390 - 0x38F),
/* 0x38F */ SCHEDULE_CMD_RET_NONE(),
/* 0x390 */ SCHEDULE_CMD_RET_TIME(13, 52, 14, 50, 68),
/* 0x396 */ SCHEDULE_CMD_RET_TIME(13, 30, 13, 52, 66),
/* 0x39C */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ALLEY, 0x408 - 0x3A0),
/* 0x3A0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 45, 15, 5, 0x402 - 0x3A6),
/* 0x3A6 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x3DB - 0x3AA),
/* 0x3AA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 5, 15, 20, 0x3D5 - 0x3B0),
/* 0x3B0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 20, 15, 25, 0x3CF - 0x3B6),
/* 0x3B6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 25, 15, 40, 0x3C9 - 0x3BC),
/* 0x3BC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 40, 16, 15, 0x3C3 - 0x3C2),
/* 0x3C2 */ SCHEDULE_CMD_RET_NONE(),
/* 0x3C3 */ SCHEDULE_CMD_RET_TIME(15, 40, 16, 15, 81),
/* 0x3C9 */ SCHEDULE_CMD_RET_TIME(15, 25, 15, 40, 17),
/* 0x3CF */ SCHEDULE_CMD_RET_TIME(15, 20, 15, 25, 80),
/* 0x3D5 */ SCHEDULE_CMD_RET_TIME(15, 5, 15, 20, 23),
/* 0x3DB */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 5, 15, 20, 0x3FC - 0x3E1),
/* 0x3E1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 20, 15, 50, 0x3F6 - 0x3E7),
/* 0x3E7 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 50, 16, 15, 0x3F0 - 0x3ED),
/* 0x3ED */ SCHEDULE_CMD_RET_VAL_L(0),
/* 0x3F0 */ SCHEDULE_CMD_RET_TIME(15, 50, 16, 15, 71),
/* 0x3F6 */ SCHEDULE_CMD_RET_TIME(15, 20, 15, 50, 25),
/* 0x3FC */ SCHEDULE_CMD_RET_TIME(15, 5, 15, 20, 23),
/* 0x402 */ SCHEDULE_CMD_RET_TIME(14, 45, 15, 5, 70),
/* 0x408 */ SCHEDULE_CMD_RET_NONE(),
/* 0x409 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x413 - 0x40D),
/* 0x40D */ SCHEDULE_CMD_RET_TIME(12, 0, 13, 1, 21),
/* 0x413 */ SCHEDULE_CMD_RET_NONE(),
/* 0x414 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(3, 0x588 - 0x419),
/* 0x419 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_28_08, 0x55D - 0x41E),
/* 0x41E */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_28_10, 0x52F - 0x423),
/* 0x423 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x42A),
/* 0x42A */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 13, 1, 0x527 - 0x431),
/* 0x431 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 15, 0, 0x446 - 0x437),
/* 0x437 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x43E - 0x43D),
/* 0x43D */ SCHEDULE_CMD_RET_NONE(),
/* 0x43E */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x445 - 0x442),
/* 0x442 */ SCHEDULE_CMD_RET_VAL_L(24),
/* 0x445 */ SCHEDULE_CMD_RET_NONE(),
/* 0x446 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x47B - 0x44A),
/* 0x44A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 0, 13, 1, 0x475 - 0x450),
/* 0x450 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 5, 13, 15, 0x46F - 0x456),
/* 0x456 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 45, 14, 55, 0x469 - 0x45C),
/* 0x45C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 55, 15, 0, 0x463 - 0x462),
/* 0x462 */ SCHEDULE_CMD_RET_NONE(),
/* 0x463 */ SCHEDULE_CMD_RET_TIME(14, 55, 15, 0, 2),
/* 0x469 */ SCHEDULE_CMD_RET_TIME(14, 45, 14, 55, 52),
/* 0x46F */ SCHEDULE_CMD_RET_TIME(13, 5, 13, 15, 38),
/* 0x475 */ SCHEDULE_CMD_RET_TIME(13, 0, 13, 1, 1),
/* 0x47B */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x4C8 - 0x47F),
/* 0x47F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 5, 13, 15, 0x4C2 - 0x485),
/* 0x485 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 15, 13, 25, 0x4BC - 0x48B),
/* 0x48B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 25, 13, 35, 0x4B6 - 0x491),
/* 0x491 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 15, 14, 25, 0x4B0 - 0x497),
/* 0x497 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 25, 14, 35, 0x4AA - 0x49D),
/* 0x49D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 35, 14, 45, 0x4A4 - 0x4A3),
/* 0x4A3 */ SCHEDULE_CMD_RET_NONE(),
/* 0x4A4 */ SCHEDULE_CMD_RET_TIME(14, 35, 14, 45, 50),
/* 0x4AA */ SCHEDULE_CMD_RET_TIME(14, 25, 14, 35, 48),
/* 0x4B0 */ SCHEDULE_CMD_RET_TIME(14, 15, 14, 25, 47),
/* 0x4B6 */ SCHEDULE_CMD_RET_TIME(13, 25, 13, 35, 41),
/* 0x4BC */ SCHEDULE_CMD_RET_TIME(13, 15, 13, 25, 40),
/* 0x4C2 */ SCHEDULE_CMD_RET_TIME(13, 5, 13, 15, 39),
/* 0x4C8 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_BACKTOWN, 0x4E5 - 0x4CC),
/* 0x4CC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 35, 13, 45, 0x4DF - 0x4D2),
/* 0x4D2 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 45, 13, 55, 0x4D9 - 0x4D8),
/* 0x4D8 */ SCHEDULE_CMD_RET_NONE(),
/* 0x4D9 */ SCHEDULE_CMD_RET_TIME(13, 45, 13, 55, 43),
/* 0x4DF */ SCHEDULE_CMD_RET_TIME(13, 35, 13, 45, 42),
/* 0x4E5 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x526 - 0x4E9),
/* 0x4E9 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 55, 14, 5, 0x520 - 0x4EF),
/* 0x4EF */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 5, 14, 15, 0x51A - 0x4F5),
/* 0x4F5 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 15, 14, 25, 0x514 - 0x4FB),
/* 0x4FB */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 25, 14, 35, 0x50E - 0x501),
/* 0x501 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 35, 14, 45, 0x508 - 0x507),
/* 0x507 */ SCHEDULE_CMD_RET_NONE(),
/* 0x508 */ SCHEDULE_CMD_RET_TIME(14, 35, 14, 45, 51),
/* 0x50E */ SCHEDULE_CMD_RET_TIME(14, 25, 14, 35, 49),
/* 0x514 */ SCHEDULE_CMD_RET_TIME(14, 15, 14, 25, 46),
/* 0x51A */ SCHEDULE_CMD_RET_TIME(14, 5, 14, 15, 45),
/* 0x520 */ SCHEDULE_CMD_RET_TIME(13, 55, 14, 5, 44),
/* 0x526 */ SCHEDULE_CMD_RET_NONE(),
/* 0x527 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x52E - 0x52B),
/* 0x52B */ SCHEDULE_CMD_RET_VAL_L(22),
/* 0x52E */ SCHEDULE_CMD_RET_NONE(),
/* 0x52F */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x536),
/* 0x536 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 0, 13, 1, 0x552 - 0x53C),
/* 0x53C */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(13, 1, 17, 0, 0x315 - 0x543),
/* 0x543 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x54A - 0x549),
/* 0x549 */ SCHEDULE_CMD_RET_NONE(),
/* 0x54A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x551 - 0x54E),
/* 0x54E */ SCHEDULE_CMD_RET_VAL_L(24),
/* 0x551 */ SCHEDULE_CMD_RET_NONE(),
/* 0x552 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x55C - 0x556),
/* 0x556 */ SCHEDULE_CMD_RET_TIME(12, 0, 13, 1, 21),
/* 0x55C */ SCHEDULE_CMD_RET_NONE(),
/* 0x55D */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x564),
/* 0x564 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 0, 13, 1, 0x580 - 0x56A),
/* 0x56A */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(13, 1, 15, 0, 0x446 - 0x571),
/* 0x571 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x578 - 0x577),
/* 0x577 */ SCHEDULE_CMD_RET_NONE(),
/* 0x578 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x57F - 0x57C),
/* 0x57C */ SCHEDULE_CMD_RET_VAL_L(24),
/* 0x57F */ SCHEDULE_CMD_RET_NONE(),
/* 0x580 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x587 - 0x584),
/* 0x584 */ SCHEDULE_CMD_RET_VAL_L(20),
/* 0x587 */ SCHEDULE_CMD_RET_NONE(),
/* 0x588 */ SCHEDULE_CMD_RET_NONE(),
};
static u8 D_80AFB30C[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x32 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 10, 0x2C - 0x0A),
/* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 10, 0, 13, 0x29 - 0x10),
/* 0x10 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 13, 0, 23, 0x23 - 0x16),
/* 0x16 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 23, 0, 26, 0x1D - 0x1C),
/* 0x1C */ SCHEDULE_CMD_RET_NONE(),
/* 0x1D */ SCHEDULE_CMD_RET_TIME(0, 23, 0, 26, 32),
/* 0x23 */ SCHEDULE_CMD_RET_TIME(0, 13, 0, 23, 83),
/* 0x29 */ SCHEDULE_CMD_RET_VAL_L(27),
/* 0x2C */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 10, 82),
/* 0x32 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x4F - 0x36),
/* 0x36 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 23, 0, 26, 0x49 - 0x3C),
/* 0x3C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 26, 0, 36, 0x43 - 0x42),
/* 0x42 */ SCHEDULE_CMD_RET_NONE(),
/* 0x43 */ SCHEDULE_CMD_RET_TIME(0, 26, 0, 36, 84),
/* 0x49 */ SCHEDULE_CMD_RET_TIME(0, 23, 0, 26, 33),
/* 0x4F */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x6C - 0x53),
/* 0x53 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 26, 0, 36, 0x66 - 0x59),
/* 0x59 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 36, 0, 46, 0x60 - 0x5F),
/* 0x5F */ SCHEDULE_CMD_RET_NONE(),
/* 0x60 */ SCHEDULE_CMD_RET_TIME(0, 36, 0, 46, 86),
/* 0x66 */ SCHEDULE_CMD_RET_TIME(0, 26, 0, 36, 85),
/* 0x6C */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x89 - 0x70),
/* 0x70 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 46, 0, 56, 0x83 - 0x76),
/* 0x76 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 56, 0, 59, 0x7D - 0x7C),
/* 0x7C */ SCHEDULE_CMD_RET_NONE(),
/* 0x7D */ SCHEDULE_CMD_RET_TIME(0, 56, 0, 59, 34),
/* 0x83 */ SCHEDULE_CMD_RET_TIME(0, 46, 0, 56, 87),
/* 0x89 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0xB2 - 0x8D),
/* 0x8D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 56, 0, 59, 0xAC - 0x93),
/* 0x93 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 59, 1, 9, 0xA6 - 0x99),
/* 0x99 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 9, 1, 40, 0xA0 - 0x9F),
/* 0x9F */ SCHEDULE_CMD_RET_NONE(),
/* 0xA0 */ SCHEDULE_CMD_RET_TIME(1, 9, 1, 40, 28),
/* 0xA6 */ SCHEDULE_CMD_RET_TIME(0, 59, 1, 9, 88),
/* 0xAC */ SCHEDULE_CMD_RET_TIME(0, 56, 0, 59, 36),
/* 0xB2 */ SCHEDULE_CMD_RET_NONE(),
};
static u8 D_80AFB3C0[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x1D - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 10, 0, 13, 0x17 - 0x0A),
/* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 13, 0, 23, 0x11 - 0x10),
/* 0x10 */ SCHEDULE_CMD_RET_NONE(),
/* 0x11 */ SCHEDULE_CMD_RET_TIME(0, 13, 0, 23, 90),
/* 0x17 */ SCHEDULE_CMD_RET_TIME(0, 10, 0, 13, 35),
/* 0x1D */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0x3A - 0x21),
/* 0x21 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 10, 0x34 - 0x27),
/* 0x27 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 10, 0, 13, 0x2E - 0x2D),
/* 0x2D */ SCHEDULE_CMD_RET_NONE(),
/* 0x2E */ SCHEDULE_CMD_RET_TIME(0, 10, 0, 13, 37),
/* 0x34 */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 10, 89),
/* 0x3A */ SCHEDULE_CMD_RET_NONE(),
};
static u8 D_80AFB3FC[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x1D - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x17 - 0x0A),
/* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(5, 0, 5, 10, 0x11 - 0x10),
/* 0x10 */ SCHEDULE_CMD_RET_NONE(),
/* 0x11 */ SCHEDULE_CMD_RET_TIME(5, 0, 5, 10, 91),
/* 0x17 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 29),
/* 0x1D */ SCHEDULE_CMD_RET_NONE(),
};
static u8 D_80AFB41C[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x11 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 10, 0x0B - 0x0A),
/* 0x0A */ SCHEDULE_CMD_RET_NONE(),
/* 0x0B */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 10, 91),
/* 0x11 */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Pm/scheduleScripts.schl.inc"
static s32 D_80AFB430[] = {
-1, 0, 4, 1, 0, 0, 1, 4, -1, -1, 15, 5, 0, 3, -1, -1, 1, 2, 11, 3, -1, -1, -1, 0, 0, 0, 0, 0, 1, 12, -1,
@ -1987,7 +1628,7 @@ void func_80AFA438(EnPm* this, PlayState* play) {
}
void func_80AFA4D0(EnPm* this, PlayState* play) {
static u8* D_80AFB900[] = {
static ScheduleScript* D_80AFB900[] = {
D_80AFAD80, D_80AFB30C, D_80AFB3C0, D_80AFB3FC, D_80AFB41C,
};
u16 time = CURRENT_TIME;

View File

@ -0,0 +1,39 @@
D_80B2C200 {
if_time_range (9, 31, 9, 35) {
return_l (POSTBOX_SCH_CHECKED_BY_POSTMAN)
} else {
return_l (POSTBOX_SCH_AVAILABLE)
}
}
D_80B2C20C {
if_time_range (10, 3, 10, 7) {
return_l (POSTBOX_SCH_CHECKED_BY_POSTMAN)
} else {
return_l (POSTBOX_SCH_AVAILABLE)
}
}
D_80B2C218 {
if_time_range (10, 35, 10, 39) {
return_l (POSTBOX_SCH_CHECKED_BY_POSTMAN)
} else {
return_l (POSTBOX_SCH_AVAILABLE)
}
}
D_80B2C224 {
if_time_range (10, 53, 10, 57) {
return_l (POSTBOX_SCH_CHECKED_BY_POSTMAN)
} else {
return_l (POSTBOX_SCH_AVAILABLE)
}
}
D_80B2C230 {
if_time_range (11, 25, 11, 29) {
return_l (POSTBOX_SCH_CHECKED_BY_POSTMAN)
} else {
return_l (POSTBOX_SCH_AVAILABLE)
}
}

View File

@ -28,35 +28,7 @@ typedef enum {
/* 1 */ POSTBOX_BEHAVIOUR_TAKE_ITEM
} PostboxBehaviour;
static u8 D_80B2C200[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 31, 9, 35, 0x9 - 0x6),
/* 0x6 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_AVAILABLE),
/* 0x9 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_CHECKED_BY_POSTMAN),
};
static u8 D_80B2C20C[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 3, 10, 7, 0x9 - 0x6),
/* 0x6 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_AVAILABLE),
/* 0x9 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_CHECKED_BY_POSTMAN),
};
static u8 D_80B2C218[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 35, 10, 39, 0x9 - 0x6),
/* 0x6 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_AVAILABLE),
/* 0x9 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_CHECKED_BY_POSTMAN),
};
static u8 D_80B2C224[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 53, 10, 57, 0x9 - 0x6),
/* 0x6 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_AVAILABLE),
/* 0x9 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_CHECKED_BY_POSTMAN),
};
static u8 D_80B2C230[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 25, 11, 29, 0x9 - 0x6),
/* 0x6 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_AVAILABLE),
/* 0x9 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_CHECKED_BY_POSTMAN),
};
#include "build/src/overlays/actors/ovl_En_Pst/scheduleScripts.schl.inc"
s32 D_80B2C23C[] = {
0x0E27840C, 0x0E00FF2B, 0x00000031, 0x00392800, 0x0A122C27, 0xA40C2F00, 0x000C1012,
@ -371,7 +343,7 @@ void EnPst_HandleSchedule(EnPst* this, PlayState* play) {
}
void EnPst_FollowSchedule(EnPst* this, PlayState* play) {
static u8* sScheduleScripts[] = {
static ScheduleScript* sScheduleScripts[] = {
D_80B2C200, D_80B2C20C, D_80B2C218, D_80B2C224, D_80B2C230,
};
s16 params = this->actor.params;

View File

@ -0,0 +1,65 @@
D_80BAE820 {
if_day (2) {
if_week_event_reg (WEEKEVENTREG_RECOVERED_STOLEN_BOMB_BAG) {
return_none
} else if_scene (SCENE_ICHIBA) {
if_time_range (0, 0, 0, 25) {
return_time (0, 0, 0, 25, 13)
} else if_time_range (0, 25, 0, 30) {
return_time (0, 25, 0, 30, 6)
} else if_time_range (1, 15, 1, 20) {
return_time (1, 15, 1, 20, 7)
} else if_time_range (1, 20, 1, 45) {
return_time (1, 20, 1, 45, 14)
} else {
return_none
}
} else if_scene (SCENE_AYASHIISHOP) {
if_time_range (0, 25, 0, 30) {
return_time (0, 25, 0, 30, 8)
} else if_time_range (0, 30, 0, 45) {
return_time (0, 30, 0, 45, 10)
} else if_time_range (0, 45, 1, 0) {
return_time (0, 45, 1, 0, 2)
} else if_time_range (1, 0, 1, 15) {
return_time (1, 0, 1, 15, 11)
} else if_time_range (1, 15, 1, 20) {
return_time (1, 15, 1, 20, 9)
} else {
return_none
}
} else {
return_none
}
} else if_day (1) {
if_scene (SCENE_BACKTOWN) {
if_time_range (18, 0, 0, 20) {
return_time (18, 0, 0, 20, 3)
} else if_time_range (0, 20, 0, 30) {
return_time (0, 20, 0, 30, 15)
} else if_since_time (0, 30) {
return_l (4)
} else {
return_none
}
} else {
return_none
}
} else if_day (3) {
if_scene (SCENE_IKANA) {
if_time_range (18, 0, 19, 0) {
return_time (18, 0, 19, 0, 12)
} else if_time_range (19, 0, 19, 25) {
return_l (5)
} else if_time_range (19, 25, 0, 0) {
return_time (19, 25, 0, 0, 1)
} else {
return_none
}
} else {
return_none
}
} else {
return_none
}
}

View File

@ -142,55 +142,7 @@ static TrackOptionsSet sTrackOptions = {
{ 0x1770, 4, 1, 6 },
};
static u8 D_80BAE820[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x80 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_RECOVERED_STOLEN_BOMB_BAG, 0x7F - 0x08),
/* 0x08 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x3D - 0x0C),
/* 0x0C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 25, 0x37 - 0x12),
/* 0x12 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 25, 0, 30, 0x31 - 0x18),
/* 0x18 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 15, 1, 20, 0x2B - 0x1E),
/* 0x1E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 20, 1, 45, 0x25 - 0x24),
/* 0x24 */ SCHEDULE_CMD_RET_NONE(),
/* 0x25 */ SCHEDULE_CMD_RET_TIME(1, 20, 1, 45, 14),
/* 0x2B */ SCHEDULE_CMD_RET_TIME(1, 15, 1, 20, 7),
/* 0x31 */ SCHEDULE_CMD_RET_TIME(0, 25, 0, 30, 6),
/* 0x37 */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 25, 13),
/* 0x3D */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_AYASHIISHOP, 0x7E - 0x41),
/* 0x41 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 25, 0, 30, 0x78 - 0x47),
/* 0x47 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 30, 0, 45, 0x72 - 0x4D),
/* 0x4D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 45, 1, 0, 0x6C - 0x53),
/* 0x53 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 0, 1, 15, 0x66 - 0x59),
/* 0x59 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 15, 1, 20, 0x60 - 0x5F),
/* 0x5F */ SCHEDULE_CMD_RET_NONE(),
/* 0x60 */ SCHEDULE_CMD_RET_TIME(1, 15, 1, 20, 9),
/* 0x66 */ SCHEDULE_CMD_RET_TIME(1, 0, 1, 15, 11),
/* 0x6C */ SCHEDULE_CMD_RET_TIME(0, 45, 1, 0, 2),
/* 0x72 */ SCHEDULE_CMD_RET_TIME(0, 30, 0, 45, 10),
/* 0x78 */ SCHEDULE_CMD_RET_TIME(0, 25, 0, 30, 8),
/* 0x7E */ SCHEDULE_CMD_RET_NONE(),
/* 0x7F */ SCHEDULE_CMD_RET_NONE(),
/* 0x80 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0xA9 - 0x84),
/* 0x84 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_BACKTOWN, 0xA8 - 0x88),
/* 0x88 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 0, 20, 0xA2 - 0x8E),
/* 0x8E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 20, 0, 30, 0x9C - 0x94),
/* 0x94 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(0, 30, 0x9B - 0x98),
/* 0x98 */ SCHEDULE_CMD_RET_VAL_L(4),
/* 0x9B */ SCHEDULE_CMD_RET_NONE(),
/* 0x9C */ SCHEDULE_CMD_RET_TIME(0, 20, 0, 30, 15),
/* 0xA2 */ SCHEDULE_CMD_RET_TIME(18, 0, 0, 20, 3),
/* 0xA8 */ SCHEDULE_CMD_RET_NONE(),
/* 0xA9 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0xD4 - 0xAD),
/* 0xAD */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_IKANA, 0xD3 - 0xB1),
/* 0xB1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 19, 0, 0xCD - 0xB7),
/* 0xB7 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(19, 0, 19, 25, 0xCA - 0xBD),
/* 0xBD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(19, 25, 0, 0, 0xC4 - 0xC3),
/* 0xC3 */ SCHEDULE_CMD_RET_NONE(),
/* 0xC4 */ SCHEDULE_CMD_RET_TIME(19, 25, 0, 0, 1),
/* 0xCA */ SCHEDULE_CMD_RET_VAL_L(5),
/* 0xCD */ SCHEDULE_CMD_RET_TIME(18, 0, 19, 0, 12),
/* 0xD3 */ SCHEDULE_CMD_RET_NONE(),
/* 0xD4 */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Suttari/scheduleScripts.schl.inc"
static s32 D_80BAE8F8[] = {
-1, -1, -1, -1, -1, -1, 1, 2, 0, 3, 1, 2, 0, 0, 3, 0,

View File

@ -0,0 +1,27 @@
D_80BE18D0 {
if_day (3) {
if_scene (SCENE_MILK_BAR) {
if_time_range (9, 50, 18, 1) {
return_time (9, 50, 18, 1, 1)
} else if_time_range (18, 0, 6, 0) {
return_time (18, 0, 6, 0, 2)
} else {
return_l (0)
}
} else {
return_none
}
} else {
if_scene (SCENE_MILK_BAR) {
if_time_range (9, 50, 21, 5) {
return_time (9, 50, 21, 5, 1)
} else if_time_range (21, 55, 5, 5) {
return_time (21, 55, 5, 5, 2)
} else {
return_none
}
} else {
return_none
}
}
}

View File

@ -20,23 +20,7 @@ void EnTab_Draw(Actor* thisx, PlayState* play);
void func_80BE127C(EnTab* this, PlayState* play);
void func_80BE1348(EnTab* this, PlayState* play);
static u8 D_80BE18D0[] = {
/* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x24 - 0x04),
/* 0x04 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0x23 - 0x08),
/* 0x08 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 50, 18, 1, 0x1D - 0x0E),
/* 0x0E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x17 - 0x14),
/* 0x14 */ SCHEDULE_CMD_RET_VAL_L(0),
/* 0x17 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 2),
/* 0x1D */ SCHEDULE_CMD_RET_TIME(9, 50, 18, 1, 1),
/* 0x23 */ SCHEDULE_CMD_RET_NONE(),
/* 0x24 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0x41 - 0x28),
/* 0x28 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 50, 21, 5, 0x3B - 0x2E),
/* 0x2E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 55, 5, 5, 0x35 - 0x34),
/* 0x34 */ SCHEDULE_CMD_RET_NONE(),
/* 0x35 */ SCHEDULE_CMD_RET_TIME(21, 55, 5, 5, 2),
/* 0x3B */ SCHEDULE_CMD_RET_TIME(9, 50, 21, 5, 1),
/* 0x41 */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Tab/scheduleScripts.schl.inc"
s32 D_80BE1914[] = {
0x003A0200, 0x080E2AF9, 0x0C113A02, 0x100E2AFA, 0x0C150900, 0x000E2AFB,

View File

@ -0,0 +1,133 @@
sScheduleScript {
if_day (1) {
if_scene (SCENE_ALLEY) {
if_time_range (6, 50, 7, 20) {
return_time (6, 50, 7, 20, 15)
} else if_before_time (7, 30) {
return_none
} else if_week_event_reg (WEEKEVENTREG_51_04) {
return_s (10)
} else {
return_none
}
} else if_scene (SCENE_CLOCKTOWER) {
if_time_range (6, 0, 6, 30) {
return_time (6, 0, 6, 30, 13)
} else if_time_range (6, 30, 6, 35) {
return_s (1)
} else if_time_range (6, 35, 6, 50) {
return_time (6, 35, 6, 50, 14)
} else {
return_none
}
} else {
return_none
}
} else if_day (2) {
if_week_event_reg (WEEKEVENTREG_51_02) {
if_scene (SCENE_ALLEY) {
if_before_time (13, 0) {
branch (label_0x050)
} else if_time_range (15, 5, 15, 25) {
return_time (15, 5, 15, 25, 16)
} else if_time_range (15, 25, 15, 40) {
return_s (1)
} else if_time_range (15, 40, 16, 0) {
return_time (15, 40, 16, 0, 17)
} else {
return_none
}
} else if_scene (SCENE_AYASHIISHOP) {
if_time_range (15, 55, 16, 10) {
return_time (15, 55, 16, 10, 12)
} else if_time_range (16, 10, 22, 10) {
return_s (3)
} else {
return_none
}
} else {
return_none
}
} else {
branch (label_0x050)
label_0x050:
if_week_event_reg (WEEKEVENTREG_51_04) {
return_l (10)
} else {
return_none
}
}
} else if_day (3) {
if_week_event_reg (WEEKEVENTREG_RECOVERED_STOLEN_BOMB_BAG) {
label_0x12C:
if_scene (SCENE_AYASHIISHOP) {
if_week_event_reg (WEEKEVENTREG_51_08) {
return_s (4)
} else {
return_none
}
} else {
return_none
}
} else {
if_week_event_reg (WEEKEVENTREG_SAKON_DEAD) {
branch (label_0x12C)
} else if_scene (SCENE_SECOM) {
return_s (7)
} else if_week_event_reg (WEEKEVENTREG_ESCAPED_SAKONS_HIDEOUT) {
if_scene (SCENE_IKANA) {
if_week_event_reg (WEEKEVENTREG_90_02) {
return_none
} else {
return_s (9)
}
} else if_scene (SCENE_TOWN) {
if_time_range (4, 0, 4, 10) {
return_time (4, 0, 4, 10, 11)
} else {
return_none
}
} else if_scene (SCENE_YADOYA) {
if_time_range (4, 10, 4, 30) {
return_time (4, 10, 4, 30, 18)
} else if_week_event_reg (WEEKEVENTREG_DELIVERED_PENDANT_OF_MEMORIES) {
if_time_range (4, 30, 6, 0) {
return_s (8)
} else {
return_none
}
} else if_time_range (4, 30, 4, 45) {
return_time (4, 30, 4, 45, 19)
} else if_time_range (4, 45, 6, 0) {
return_s (6)
} else {
return_none
}
} else {
return_none
}
} else if_scene (SCENE_IKANA) {
not if_week_event_reg (WEEKEVENTREG_51_08) {
return_s (5)
} else if_week_event_reg (WEEKEVENTREG_61_08) {
return_s (5)
} else if_week_event_reg (WEEKEVENTREG_51_10) {
if_time_range (19, 0, 19, 10) {
return_time (19, 0, 19, 10, 20)
} else {
return_none
}
} else if_before_time (19, 0) {
return_s (5)
} else {
return_none
}
} else {
return_none
}
}
} else {
return_none
}
}

View File

@ -82,94 +82,7 @@ void func_80A4084C(EnTest3* this, PlayState* play);
void func_80A40908(EnTest3* this, PlayState* play);
void func_80A40A6C(EnTest3* this, PlayState* play);
static u8 sScheduleScript[] = {
/* 0x000 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0x046 - 0x004),
/* 0x004 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ALLEY, 0x020 - 0x008),
/* 0x008 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 50, 7, 20, 0x01A - 0x00E),
/* 0x00E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(7, 30, 0x019 - 0x012),
/* 0x012 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_04, 0x017 - 0x016),
/* 0x016 */ SCHEDULE_CMD_RET_NONE(),
/* 0x017 */ SCHEDULE_CMD_RET_VAL_S(10),
/* 0x019 */ SCHEDULE_CMD_RET_NONE(),
/* 0x01A */ SCHEDULE_CMD_RET_TIME(6, 50, 7, 20, 15),
/* 0x020 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x045 - 0x024),
/* 0x024 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 6, 30, 0x03F - 0x02A),
/* 0x02A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 30, 6, 35, 0x03D - 0x030),
/* 0x030 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 35, 6, 50, 0x037 - 0x036),
/* 0x036 */ SCHEDULE_CMD_RET_NONE(),
/* 0x037 */ SCHEDULE_CMD_RET_TIME(6, 35, 6, 50, 14),
/* 0x03D */ SCHEDULE_CMD_RET_VAL_S(1),
/* 0x03F */ SCHEDULE_CMD_RET_TIME(6, 0, 6, 30, 13),
/* 0x045 */ SCHEDULE_CMD_RET_NONE(),
/* 0x046 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x09B - 0x04A),
/* 0x04A */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_02, 0x058 - 0x04E),
/* 0x04E */ SCHEDULE_CMD_BRANCH_S(0x0),
/* 0x050 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_04, 0x055 - 0x054),
/* 0x054 */ SCHEDULE_CMD_RET_NONE(),
/* 0x055 */ SCHEDULE_CMD_RET_VAL_L(10),
/* 0x058 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ALLEY, 0x081 - 0x05C),
/* 0x05C */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x050 - 0x060),
/* 0x060 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 5, 15, 25, 0x07B - 0x066),
/* 0x066 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 25, 15, 40, 0x079 - 0x06C),
/* 0x06C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 40, 16, 0, 0x073 - 0x072),
/* 0x072 */ SCHEDULE_CMD_RET_NONE(),
/* 0x073 */ SCHEDULE_CMD_RET_TIME(15, 40, 16, 0, 17),
/* 0x079 */ SCHEDULE_CMD_RET_VAL_S(1),
/* 0x07B */ SCHEDULE_CMD_RET_TIME(15, 5, 15, 25, 16),
/* 0x081 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_AYASHIISHOP, 0x09A - 0x085),
/* 0x085 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 55, 16, 10, 0x094 - 0x08B),
/* 0x08B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 10, 22, 10, 0x092 - 0x091),
/* 0x091 */ SCHEDULE_CMD_RET_NONE(),
/* 0x092 */ SCHEDULE_CMD_RET_VAL_S(3),
/* 0x094 */ SCHEDULE_CMD_RET_TIME(15, 55, 16, 10, 12),
/* 0x09A */ SCHEDULE_CMD_RET_NONE(),
/* 0x09B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(3, 0x138 - 0x0A0),
/* 0x0A0 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_RECOVERED_STOLEN_BOMB_BAG, 0x12C - 0x0A5),
/* 0x0A5 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_SAKON_DEAD, 0x12C - 0x0AA),
/* 0x0AA */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_SECOM, 0x0B0 - 0x0AE),
/* 0x0AE */ SCHEDULE_CMD_RET_VAL_S(7),
/* 0x0B0 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_ESCAPED_SAKONS_HIDEOUT, 0x0DD - 0x0B4),
/* 0x0B4 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_IKANA, 0x0DC - 0x0B8),
/* 0x0B8 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_08, 0x0BE - 0x0BC),
/* 0x0BC */ SCHEDULE_CMD_RET_VAL_S(5),
/* 0x0BE */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_61_08, 0x0DA - 0x0C2),
/* 0x0C2 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_10, 0x0CD - 0x0C6),
/* 0x0C6 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(19, 0, 0x0CB - 0x0CA),
/* 0x0CA */ SCHEDULE_CMD_RET_NONE(),
/* 0x0CB */ SCHEDULE_CMD_RET_VAL_S(5),
/* 0x0CD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(19, 0, 19, 10, 0x0D4 - 0x0D3),
/* 0x0D3 */ SCHEDULE_CMD_RET_NONE(),
/* 0x0D4 */ SCHEDULE_CMD_RET_TIME(19, 0, 19, 10, 20),
/* 0x0DA */ SCHEDULE_CMD_RET_VAL_S(5),
/* 0x0DC */ SCHEDULE_CMD_RET_NONE(),
/* 0x0DD */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_IKANA, 0x0E8 - 0x0E1),
/* 0x0E1 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_90_02, 0x0E7 - 0x0E5),
/* 0x0E5 */ SCHEDULE_CMD_RET_VAL_S(9),
/* 0x0E7 */ SCHEDULE_CMD_RET_NONE(),
/* 0x0E8 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x0F9 - 0x0EC),
/* 0x0EC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 0, 4, 10, 0x0F3 - 0x0F2),
/* 0x0F2 */ SCHEDULE_CMD_RET_NONE(),
/* 0x0F3 */ SCHEDULE_CMD_RET_TIME(4, 0, 4, 10, 11),
/* 0x0F9 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x12B - 0x0FD),
/* 0x0FD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 10, 4, 30, 0x125 - 0x103),
/* 0x103 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_DELIVERED_PENDANT_OF_MEMORIES, 0x11C - 0x107),
/* 0x107 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 30, 4, 45, 0x116 - 0x10D),
/* 0x10D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 45, 6, 0, 0x114 - 0x113),
/* 0x113 */ SCHEDULE_CMD_RET_NONE(),
/* 0x114 */ SCHEDULE_CMD_RET_VAL_S(6),
/* 0x116 */ SCHEDULE_CMD_RET_TIME(4, 30, 4, 45, 19),
/* 0x11C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 30, 6, 0, 0x123 - 0x122),
/* 0x122 */ SCHEDULE_CMD_RET_NONE(),
/* 0x123 */ SCHEDULE_CMD_RET_VAL_S(8),
/* 0x125 */ SCHEDULE_CMD_RET_TIME(4, 10, 4, 30, 18),
/* 0x12B */ SCHEDULE_CMD_RET_NONE(),
/* 0x12C */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_AYASHIISHOP, 0x137 - 0x130),
/* 0x130 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_08, 0x135 - 0x134),
/* 0x134 */ SCHEDULE_CMD_RET_NONE(),
/* 0x135 */ SCHEDULE_CMD_RET_VAL_S(4),
/* 0x137 */ SCHEDULE_CMD_RET_NONE(),
/* 0x138 */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Test3/scheduleScripts.schl.inc"
ActorInit En_Test3_InitVars = {
/**/ ACTOR_EN_TEST3,

View File

@ -0,0 +1,10 @@
D_80AEF800 {
//! Uses long command, even when it isn't required
if_time_range_l (6, 0, 18, 0) {
return_time (6, 0, 18, 0, 1)
//! trailing return
return_none
} else {
return_none
}
}

View File

@ -62,12 +62,7 @@ void func_80AEF5F4(Actor* thisx, PlayState* play);
static s32 D_80AF0050;
static u8 D_80AEF800[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(6, 0, 18, 0, 0x8 - 0x7),
/* 0x7 */ SCHEDULE_CMD_RET_NONE(),
/* 0x8 */ SCHEDULE_CMD_RET_TIME(6, 0, 18, 0, 1),
/* 0xE */ SCHEDULE_CMD_RET_NONE(),
};
#include "build/src/overlays/actors/ovl_En_Tk/scheduleScripts.schl.inc"
ActorInit En_Tk_InitVars = {
/**/ ACTOR_EN_TK,

View File

@ -0,0 +1,7 @@
sScheduleScript {
if_time_range (10, 0, 20, 0) {
return_l (1)
} else {
return_l (2)
}
}

View File

@ -34,11 +34,7 @@ void ObjShutter_Init(Actor* thisx, PlayState* play) {
void ObjShutter_Destroy(Actor* thisx, PlayState* play) {
}
static u8 sScheduleScript[] = {
/* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 20, 0, 0x9 - 0x6),
/* 0x6 */ SCHEDULE_CMD_RET_VAL_L(2),
/* 0x9 */ SCHEDULE_CMD_RET_VAL_L(1),
};
#include "build/src/overlays/actors/ovl_Obj_Shutter/scheduleScripts.schl.inc"
void ObjShutter_Update(Actor* thisx, PlayState* play2) {
ObjShutter* this = THIS;

1035
tools/buildtools/schc.py Executable file

File diff suppressed because it is too large Load Diff

View File

@ -1888,8 +1888,8 @@
0x801C56CC:("D_801C56CC","UNK_TYPE1","",0x1),
0x801C56F8:("D_801C56F8","UNK_PTR","",0x4),
0x801C5720:("sSceneEntranceTable","SceneEntranceTableEnty","[110]",0x528),
0x801C5C50:("D_801C5C50","UNK_PTR","",0x4),
0x801C5C9C:("D_801C5C9C","UNK_TYPE1","",0x1),
0x801C5C50:("sScheduleCmdFuncs","UNK_PTR","",0x4),
0x801C5C9C:("sScheduleCmdSizes","UNK_TYPE1","",0x1),
0x801C5CB0:("D_801C5CB0","UNK_PTR","",0x4),
0x801C5CD0:("sMtxFClear","MtxF","",0x40),
0x801C5D10:("D_801C5D10","UNK_TYPE1","",0x1),

View File

@ -176,7 +176,7 @@ def disassemble_unk_script(data_file, offset):
script_len = calc_length(data_file, offset);
script_len_num_digits = 0 if script_len == 1 else int(math.ceil(math.log(script_len - 1, 16)))
out = "static u8 sScheduleScript[] = {\n"
out = "static ScheduleScript sScheduleScript[] = {\n"
# Keep trying to disassemble until it hits a terminator and no commands branch past it
while any([branch >= off for branch in branch_targets]) or cmd not in [0x04, 0x05, 0x06, 0x09]: