# Description of Compile Target

### [TWL_FINALROM]

This is the option used to create the release version for the master submission.

When the ROM is submitted, it is necessary to use this option for the build.

- The `SDK_ASSERT` and `SDK_WARNING` functions are disabled
- The `OS_Panic` and `OS_TPanic` functions do not display messages with the FINALROM library. (They do nothing and simply stop the operation, which is equivalent of the `OS_Terminate` function.)
- Optimization ON
- Many debug functions return set values or don't do anything, regardless of the operating environment.

### [TWL_DEBUG]

This option is used for more careful debugging than TWO_FINALROM or TWL_RELEASE.

- OS debug string display functions such as OS_PutString are enabled.
- The `OS_GetArgc`, `OS_GetArgv`, and related functions are enabled.
- The `OS_Panic` and `OS_TPanic` functions are enabled.
- The debug stack check functions `OS_CheckStack` and `OS_CheckIrqStack` are enabled.

For details about which functions are valid or invalid, see the debug functions in the OS Debug Function Reference.

### [TWL_RELEASE]

This option is used to debug under conditions more similar to those in the final product than when TWL_DEBUG is used.

It's basically a combination of the features in `TWL_DEBUG` and `TWL_ROM`.
The details of what was combined are outlined below.

Features | TWL_DEBUG | TWL_RELEASE | TWL_FINALROM
--- | --- | --- | ---
OS debug output functions (`OS_PutString`, etc.) | Enabled. | Disabled.
Compiler Optimization | OFF | ON
SDK internal debug codes | Enabled. | Disabled.
Assert functions (`SDK_ASSERT`, etc.) | Enabled. | Disabled.
Functions such as `OS_Panic` | Enabled. | Equivalent to `OS_Terminate`

CONFIDENTIAL