Skip to content

Project Settings

Stefan Mielke edited this page Apr 6, 2022 · 6 revisions

Project Settings

Located on the right panel, provides the user with project-specific configurations, and are only used by the current project.

Its configurations are kept inside the file ngine.project.json on the project folder.

General Tab

Contains information that should be set, or things used by some of the modules.

Info

Name

Name that will go inside the rom that identifies your game.

Rom

Name of the rom file that will be generated. Also used by the Run command and anything that uses the rom file inside the engine.

Save Type

Save type used by the ROM. Save type support may vary based on emulator or flashcart. Make sure to check the N64Brew wiki for more information.

Region Free

If your ROM is not specific for a region (NTSC/PAL).

Custom Content Pipeline

This is a bash script you can add to the project that will be called at the end of the content pipeline (the pipeline that exports sprites and audio to libdragon's format).

You can use this script for custom imports (usually when you use content that is not known by this engine, such as tiled maps or videos).

Global Script

You can set the script that will run independently of any screens here.

This script will be used even if the screens module is not used.

Refer to the scripts documentation for more info.

Memory Reserve

Global Memory Reserve (KB)

Used by the memory pool module, is used to set the amount of memory that will be reserved by global objects (objects that will be used throughout the game, independently of screen).

You can access this memory pool through the variable global_memory_pool that is set inside src/game.gen.h if the memory pool module is active.

Scene Memory Reserve (KB)

Used by the memory pool module, is used to set the amount of memory that will be reserved to be used by the scenes. This memory will be reset whenever the screen changes, so anything that is allocated using this pool does not need to be freed manually.

You can access this memory pool through the variable scene_memory_pool that is set inside src/game.gen.h if the memory pool module is active.

Libdragon Tab

You can manage your libdragon installation that is used for this project.

Update Libdragon

This will run 'libdragon update', which will update your docker container with the latest version available.

Re-Build Libdragon

This will run 'libdragon install', which will build and install the code inside the 'libdragon' folder. This can be used when you modify the libdragon source, or change branches.

Branch

This can be used to change the libdragon branch you are using (eg.: if you want to test functionality that is still in-progress).

For that you can simply type the name of the branch and click 'Update'. After that you should use 'Re-Build Libdragon' to build the version for that branch.

If you want to revert to the standard branch, you can click 'Reset', then click 'Update' and then 'Re-Build Libdragon'.

Remember to also click 'Save' to keep this in-sync when you re-open the project.

Modules Tab

You can set which modules will be active on this tab.

Libdragon Modules

Audio

Enables the use of the low level audio library.

Audio Mixer

Enables the use of the higher-level mixer library. You can use this library to easily play sfx and music.

Requires the audio module.

Display

Enables the use of the graphics_* functions and to display anything that is not the console.

RDP

Enables the use of the rdp_* functions.

Requires the display module.

Console

Enables the use of the console display. You may not want to use this with the display module, but it is possible to use both.

Controller

Enables the use of the controller pad. This creates three variables inside src/game.gen.h:

  • keys_up
    • use this to know which buttons were released on the current frame
  • keys_down
    • use this to know which buttons were pressed on the current frame
  • keys_pressed
    • use thise to know which button are still being pressed (more than one frame)

Polling for these are made automatically, so you can simply use the variables as you need.

Debug Is Viewer

Enables the use of the "Is Viewer" (implemented on some emulators).

Debug USB

Enables the use of the USB debug library (requires a flashcart with USB support).

DFS

Enables the use of DFS (dragon file system). This enables imported content to be used inside the game.

Timer

Enables the use of the Timer library on libdragon.

Real-Time Clock (RTC) - new on 1.1.0

Enables the use of the RTC functions on libdragon.

Libdragon-Extensions Modules

Memory Pool

Enables the use of the Memory Pool library from libdragon-extensions.

You can set the memory limits on the General tab. Refer to that to know more about the variables it creates.

Scene Manager

Enables the use of the Scene Manager library from libdragon-extensions.

This will also enable the usage of scenes inside the engine. Refer to Scenes documentation for more information.

Audio Tab

Here you can set the audio and mixer modules configurations.

Refer to the libdragon documentation for more information.

Display Tab

Here you can set the display module configurations.

Refer to the libdragon documentation for more information.