NITRO help welcome

ensata NITRO Software Emulator

The ensata NITRO Software Emulator was developed as a Debug Target for development of NITRO applications.

The following is a summary of features:

  • Accurate rendering similar to the Nintendo DS system

  • Functionality as a debug target for CodeWarrior for NITRO *1

  • Functionality as a viewer for NITRO-Character
    • *2

  • A debug print output console

*1 For details, see the documentation included with CodeWarrior for NITRO.
*2 For details, see the documentation included with NITRO-Character.

Copyright (C) 2004 Nintendo


NITRO help requirement

System Requirements

  • Supported PC:
    Intel Pentium Processor
    At least 256 MB of RAM
    Video Board that supports DirectX9 (when using the D3D Rendering Feature)

  • Supported OS: Windows XP/2000 (Service Pack 4 + IE6)

  • Required Runtime:
    DirectX8 or higher (when using only DirectInput or DirectSound)
    DirectX9 or higher (when using Direct3D in addition to the above)

  • Required Devices: Mouse, DirectInput-compatible Game Pad
    Note: The keyboard can be used in place of the game pad if there is no game pad available.

Caution: Processing load is heavy. We recommend that a high-performance PC be used.


NITRO help compatiblity

Compatibility with NITRO

Implementation Status of ensata NITRO Software Emulator

Items with no entry have been implemented.
  • ARM 946ES
    • CP15
      • Register1 TBIT Load Specification Control - Not implemented (normally set to enable)
      • Register1 Cache Substitution Algorithm - Not implemented (implemented only for Round-Robin)
      • Register13 Trace Process Identifier Register - No plans for implementation
      • Register15 - No plans for implementation
    • CPU
      • LDC, STC, CDP Instructions - Not implemented
  • Memory
    • NITRO Game Card - Not implemented
    • AGB Game Pak - Not implemented
    • Shared Work RAM - Not implemented
  • Display
    • Forced Blank - Not implemented
  • 3D Graphics
    • Geometry
      • Geometry engine processes are implemented with a process time of zero.
      • Coordinate values during calculation overflow differ greatly from the production unit.
      • Counter values for Polygon List RAM/Vertex RAM overflow do not update (updates will occur on the production unit)
      • Specifications for polygon auto sort on the Nintendo DS system is not implemented
    • Software Rendering
      • All features implemented. (However, differences in the image may exist.)
    • D3D Rendering
      • The attribute buffer is not emulated.
        • The fog enable flag and Polygon ID (translucent and opaque) are disabled.
      • The fog enable flag for clear register is disabled.
      • When the video board's W buffering cannot be used, Z buffering can be used when W buffering.
      • Initialization with clear image is allowable with a video board that supports Pixel Shader 2.0 or greater. However, if the video board does not support W buffering, initialization is not allowed when using W buffering.
      • Quadrilateral Polygon
        • Quadrilateral polygons are rendered as triangles.
          For this reason, when the four vertices are not on the sample plane, the display will vary on the production unit. Also, the same limitations apply to the vertex color. However, this type of quadrilateral polygons may not display correctly on the production unit, so they should be avoided.
      • Translucent Polygon
        • The feature that prevents overwriting when polygons with the same Polygon ID overlap is not emulated.
        • The software emulator does not emulate the specification that calls for including in attributes the result from an AND operation performed on the fragment fog enable flag and the attribute buffer fog enable flag.
      • Shadow Polygon
        • When rendering shadow polygons, the software emulator does not emulate the specification that calls for rendering only when the opaque attribute Polygon ID differs from the translucent Polygon ID of the rendering shadow polygon. Therefore, the object that casts a shadow may cast a shadow on itself.
        • Fog color is combined with the vertex color using the fragment fog enable flag.
        • A rendering shadow polgon may be displayed due to discrepancies in precision.
        • Mask does not function on video boards that do not support stencils.
      • Texture
        • Decal Mode
          • Exception processing when At=0 or At=31 is not emulated. For this reason, the coloring may occasionally differ.
      • a-Blending
        • The output a value is also blended using the a value. (max[As,Ab] on the production unit)
        • Exception processes are not emulated.
          • For this reason, even if the color buffer a value is zero (Ab=0), a-blending is performed using the fragment a value. On the production unit, when the color buffer a is zero (Ab=0), if the fragment a value is not zero, then the color is rendered as is and may be opaque on the screen.
        • When a-blending is set to OFF with DISP3DCNT, polygons may not be displayed properly.
      • Edge Marking
        • Due to limitations in implementation, the edge marking line may break in the middle.
        • Edges may be displayed at the intersection of polygons.
        • Edges may be displayed where extracted portions and neighboring opaque portions meet.
      • Fog
        • Because fog color is combined with vertex color before rendering, the results may differ from the production unit.
      • Anti-Aliasing
        • Not emulated.
  • Timer
    • Prescaler selection is the one cycle of the timer count value - Not implemented
  • Interrupt
    • Geometry Command FIFO Interrupt - Not implemented
    • NITRO Game Card IREQ_MC Interrupt - Not implemented
    • NITRO Game Card Data Transfer Completion Interrupt - Not implemented
    • ARM9/7FIFO Not Empty Interrupt - Not implemented
    • ARM9/7FIFO Empty Interrupt - Not implemented
    • ARM7 Interrupt - Not implemented
    • Game Pak Interrupt - Not implemented
  • Sub Processor (ARM7)
    • No plans to implement at hardware level (software patch)


NITRO help limitation

Limitations

  • There is no guarantee that NITRO applications that have been debugged and run on the ensata NITRO Software Emulator will also run on the production unit.

  • The Sub Processor (ARM7) processes are not emulated at the binary level. Therefore, no binary code for any Sub Processor can be emulated.

  • An accurate emulation is not implemented for processes in real time. For this reason, be aware that applications that depend on the runtime timing may have large discrepancies on the Nintendo DS system.

  • Two types of engines are mounted for 3D rendering. One is the software rendering engine. Images as similar as possible to those on the production unit are emulated, but because the same algorithms are not used, small discrepancies occur. The other is a rendering engine that uses Direct3D 9. The processing is faster than with the previous engine, but the video board and driver have an effect on the images, so images will differ from those on the production unit.

  • No emulation is available for sprites or lines over for polygons.


NITRO help how to get start

ensata NITRO Software Emulator Startup

  1. Start Release/ensata.exe from the folder where ensata is installed.

  2. When ensata is run for the first time, the Activation window opens.

    Log onto your account on either NTSC-ONLINE or the Software Development Support Group (Wario WORLD) website and go to the Issue Key page.

    Copy the text from Challenge Key in the Activation Dialog screen to the edit box titled Challenge Key on the Issue Key page and press the Send button.

    Copy the response key returned from the server to Response Key in the Activation Dialog screen and click on the OK button. If activation is successful, ensata will run.

Caution!
The conditions requiring activation are listed below.

  • There is no activation information file, or there is an error in the contents of the file.
  • ensata.exe has been overwritten during a major version update.
  • The activation period has expired (180 days have passed since the previous activation).
An activation period is also specified for each version of ensata independent from the ensata activation period. Obtain the latest version of ensata if the activation period has expired.


NITRO help how to execute

Application Execution on the ensata NITRO Software Emulator

Debugging NITRO executable files

The following operations are available in the Control Window:
  1. Button Operations
    • Execute command from stop position.
    • Stops the execution engine.
    • Resets the execution engine.
    • Reloads the current file.

  2. Menu Operations (Execution Types)
    • Open NITRO file: For details, follow this link.

    • Reload: For details, follow this link.

    • Open Recent: For details, follow this link.

    • Run: Executes a command from the stop position.

    • Stop: Stops the execution engine.

    • Reset: Resets the execution engine.

  3. Menu Operations (Configuration Types)
    • Debug Output Console: For details, follow this link.

    • LCD Magnification: Switches the screen size to the set value (fixed magnification) immediately.

    • Hide Separator Panel: For details, follow this link.

    • Toolbar: Controls display and location of the Toolbar.

    • D3D Rendering: For details, follow this link.

    • Key Configuration: For details, follow this link.

    • RTC Setting: For details, follow this link.

    • Backup Memory: For details, follow this link.

    • Help: Displays this help file.

    • About ensata: Displays the ensata version number.


NITRO help how to open

Opening NITRO Executable Files

There are four ways to open a NITRO executable file.
  1. Display the File Open Dialog window by selecting "Open NITRO File" from "Execute" on the menu.
    Select the target file and click on OK to load the file.

  2. Drag the target file from Windows file explorer and drop it on ensata to load the file.

  3. The Reload button will become active the moment that ensata is started and the executable file is loaded. The Reload button is helpful when re-loading the same executable file.

  4. The executable file loaded with ensata is saved in the file history. If you point to "Open Recent" in "Execute" on the menu, you can view the file history.

  5. If the executable file is set as an argument before starting ensata, the program will start with the file already loaded. The file is automatically run if the "-r" option is specified. If there is an ensata program already running when another ensata program is started with an executable file as an argument, then that file will be loaded into the ensata program that is already running.

    .srl and .enp files can be loaded.


NITRO help how to play

Game Screen Operation

The NITRO keys have been allocated to the PC keyboard as follows (default configuration):
 | Ý Key
 | ß Key
 | Ü Key
 | Þ Key
START | t Key
SELECT | e Key
debug | d Key
A | a Key
B | b Key
X | x Key
Y | y Key
L | l Key
R | r Key

If a game pad that supports DirectInput is connected, ensata will give priority to and acquire that input.

The default values can be changed. The Key Configuration dialog is opened by selecting "Key Configuration" from "Setting" in the menu.

Pressing the Default button restores the default settings above. To customize the settings, press and hold down the key and click on the button using the mouse to assign that feature to that key.

For example, to assign the A Button for NITRO to the PC enter key , open the Key Configuration dialog, press and hold down the PC enter key while clicking on the "A" Button in the Key Configuration dialog. It is the same for a game pad.

Also, if no key is pressed when a key configuration dialog button is pressed, then the key allocation set for that NITRO button is cancelled.

To allocate analog key input, move the analog key in the desired direction while the Key Configuration dialog is opened. In addition, when a direction for the +Control Pad has been assigned to NITRO for hat key input, all other directions will be automatically determined .

Thresholds can be set to customize analog key input. Click on the Edit Button on the Key Configuration dialog to input the threshold values. Click on the Edit Button again to finish inputting the threshold values.

To customize other keys, repeat this procedure. When finished, click on the OK Button to apply the settings.

Be aware that keys that operate as a toggle (e.g., CapsLock) cannot be allocated. Each button in the Key Configuration dialog has an indicator that shows the status of currently allocated keys.

  • Key is not being pressed

  • Key is being pressed

When keys that operate as toggles are allocated, the indicator light will remain lit even after the key is released.
When the Key Configuration dialog opens in ensata, a key scan is performed and if any keys that are always on are detected, those keys cannot be selected.

Note: There are no analog key inputs on the Nintendo DS system.

To use touch panel input, use the mouse click and drag operations while the mouse is on the ensata Sub-Screen


NITRO help debug print

Debug Output Console

Select Debug Output Console from the pop-up menu to open the Debug Output window.
The OS_Printf function is used on the source code, and the results are output into the window.
See the manual included with the SDK for details on the OS_Printf function.

The menu operations available in the Debug Output Console are shown below.
[File]-[Save as...]
Outputs the Debug Output Console contents to a text file
[Edit]-[Clear]
Clears the Debug Output Console display.
[Setting]-[Output log to ...]
If this is selected without a check mark next to [Output log to ...], then a dialogue box to specify the output file name will open.
If a check mark is next to [Output log to ...] when this is selected, the check mark is removed and file output is stopped.
Even if the Debug Output Console is closed while the check mark is present, output to the file continues.


NITRO help rendering

ensata NITRO Software Emulator Rendering and Monitor Updating

When ensata is run on a PC with DirectX9 runtime installed, "D3D" in "Setting" in the menu is enabled.
"D3D" has a submenu and each item of the submenu has a check mark to indicate whether that item is enabled or disabled.
  • "D3D Frame" selects the update method for the frame image generated by ensata.
    When checked, the DirectX Graphics function is used for the frame image update.
    When not checked, Windows GDI is used for the frame image update.

  • "D3D Rendering" selects the 3D rendering method.
    When checked, the Direct3D feature is used for 3D rendering.
    When not checked, 3D Rendering is processed by the software.

If DirectX runtime is not installed or if the version is lower than 8, then "D3D"will be shaded and cannot be selected.
In this case, ensata will perform 3D rendering using software and transfer the image to the PC VRAM using Windows GDI.


NITRO help RTC

RTC Settings

The RTC (Real Time Clock) can be set from a dialog window.

The time and date can be set separately.

The date is set with the year, month, and day, and the time is set in the hour, minutes, and seconds.
Select an item to change with the mouse or the Right/Left arrows. Adjust the value with the Up/Down arrows or directly input the number.

To set the date, click on the arrow button next to the date to display a calendar and select a day with the mouse or use the direction keys to select a date and press the Enter key.

To set the time, select an item and use the arrows to the right to increase or decrease the value.

If the "Use Current Time" check box is checked,
the PC system clock values will be used for the date and time.
When this box is checked, the date and time cannot be adjusted.

When finished, click on the OK or Apply button to see the changes.

Click on the OK button to apply the settings and close the dialog box.
Click on the Apply button to apply the settings but leave the dialog box open.

Note: These settings are valid only for RTC emulation and will not change the PC system clock.


NITRO Help - How To Backup

Backup Memory

Settings can be made for loading and saving backup memory, and for image export when using an external debugging device.

  • Load ... Loads a .ram file.

  • Save ... Saves the current status of backup memory in binary format (.ram).

  • Output Image ... When an external device is used with this item checked, the contents of backup memory are output to 0x20000000 and later. The image of the output backup memory contents can be read or written by using memory dump.


NITRO help how to set and save NITRO soft

Setting Up and Saving NITRO Software

This section describes setting up and saving ensata project files.

  • ensata Project Files

    By loading an ensata project file (.enp file) with ensata, both the NITRO executable file (.srl file) and the backup memory file (.ram file) can be loaded simultaneously. This feature can be used to create project files with different settings, to run the same NITRO application with different settings.

  • Creating ensata Project Files

    1. Open the Setup/Save NITRO Software dialog window.

    2. Use "Browse" to specify the ensata project file name and save location.

      The file extension is automatically set to .enp.

    3. Verify the name of the backup memory file and the saved location.

      Once the ensata project file name and saved location are determined, the backup memory file name and saved location (shown below the ensata project file name in the window) are automatically set. To change the settings, click on the "Browse" button and reconfigure the settings. The file extension is.ram.

    4. Configure the ensata project file.

      • When the [Auto Save] check box is selected, the backup file status is automatically saved in the .ram file when the .srl is reloaded.

      • When [Save srl file using a relative path] is selected, the path to the .srl file is saved as a relative path from the ensata project file.
        Similarly, when [Save using a relative path] is selected, the relative path from the ensata project file to the .ram file is saved.
        If these items are not selected, absolute paths are used.

    5. Complete creation of ensata project file

      Click on the "OK" button after setup is finished.
      The ensata project file is created and saved with these settings.


NITRO help How to change the skin

Modifying the Separator Panel Skin

NITRO has two screens: a Main screen and a Sub screen.
These two screens are physically separated and are not one continuous panel.

ensata has a Separator Panel that goes between the Main and Sub screens to recreate this effect.
The Panel has a Skin Interface that the user can freely change.

If ensata is run right after installation, ensata/skins/default_skin.bmp will be read and displayed.
The method for changing the skin is described below.

  1. First, create the skin. The image must be in 24-bit color Windows BMP format and have an image width of 256 pixels.
    There are no restrictions on image height, but we recommend 100 pixels.
    Please create an image meeting these conditions using an appropriate graphics program.

  2. Copy the image created in Step 1 to the ensata/skins folder.

  3. Execute the most recent version of ensata.exe and then close it.
    You must perform the following operations while ensata is closed (not running).

  4. Open the ensata.ini file that was created in ensata/Release with an appropriate text editor.
    Under the [reference path] section, there is a line that reads skin=\skins\default_skin.bmp. Change default_skin.bmp to the name of the file you copied in Step 2. Save ensata.ini.
    Caution: The path name is relative to the ensata folder!
    Caution: If there is no skin=\skins\default_skin.bmp item, please obtain the newest ensata.exe version.

  5. When you next run ensata.exe, the Separator Panel should be changed.
    Caution: If an image that does not meet the conditions described above is used, the Separator Panel will appear as a grey strip.

Hiding the Separator Panel

The separator panel can get in the way when you want to increase the size of the display panel during debugging, or when you want to maximize the dual-screen display while in an expanded ensata display. In this case, make sure that "Hide Separator Panel" is checked on the pop-up menu. The separator panel will be hidden as soon as "Hide Separator Panel" is checked.


NITRO help setup mainmem

Various settings for the retail product emulation

  • Main Memory Capacity Settings

    • NITRO's main memory capacity is 4 megabytes, but this can be set to 8 megabytes, the same as the development device.
    Since the ensata.ini file is created in the ensata/Release folder when ensata.exe is started up then shut down once, expand main ram=off is changed to expand main ram=on in the [memory] section.
    When ensata.exe is restarted, the main memory capacity will be 8 megabytes.
    Be sure to set the protection units, etc... used for access with the program.

  • ARM9 Exception Processing

    • By default, when the following exceptions were generated, the execution was halted and a dialog was displayed immediately after executing that instruction.

    • Aborts
    • Undefined instructions
    • BKPT instructions

    This operation can be changed to match the production unit by changing the [exception] section in the ensata/Release/ensata.ini file from break=on to break=off.

  • Executable File

    • This supports TS by default.

    To run a program that was made with TEG, rewrite the section name [whole] in the ensata/Release/ensata.ini file from TEG=off to TEG=on, and execute ensata.exe again.


NITRO help compatiblity

Licensing

  • This software is being distributed under the Non-Disclosure Agreement between Nintendo of America Inc. and your company.
    Please comply with the conditions of the Non-Disclosure Agreement when using this software.

  • The product names and company names used in the software and this help file are the trademark or copyrighted trademark of the respective companies.


NITRO help top

Copyright (C) 2004 Nintendo