Ardens is an Arduboy simulator that is useful for profiling and debugging.
Try out the full debugger here. Drag and drop an Arduboy game (.hex/.elf/.arduboy) and any FX data (.bin) onto the page.
Try the minimal player with one of the game URLs below:
- Profiler
- Identify performance hotspots at the instruction level
- View inclusive CPU load or raw cycle counts per instruction, hotspot, or symbol
- Live CPU Usage Graph
- Disassembly View
- Source lines, symbols, and labels intermixed with instructions
- Addresses of jumps, branches, and calls expanded to label/offset
- Click on jump addresses to scroll to their destination
- Hover over RAM addresses to see their symbol, data type, and value
- Jump to any symbol from sorted list
- Source View
- Call Stack
- RAM/Registers View
- Edit any register or RAM value live
- Show RAM consumption from global variables
- Track current and maximum stack usage
- Set read/write breakpoints on RAM address
- View a portion of RAM as a display buffer
- Simulation Control
- Slow down or speed up simulation speed
- Pause, continue, step into, step over, step out
- Serial Monitor
- LEDs
- EEPROM (editable)
- External flash (editable)
- Display (SSD1306) Internals
- Display View
- Customize palette and filters
- Optionally model row driver current limiting
- Temporal filtering for grayscale games
- Sound Waveform (Time and Frequency)
- Global and Local Variables
- Show all accessible locals and their data types and values
- User-defined list of globals to watch
- Screenshots
- Record PNG or GIF
- Optionally record sound as WAV
- Customize palettes and filters for recording
- Snapshots
- Save/restore snapshot of entire device state
Key | Purpose |
---|---|
Arrows | Arduboy: directional buttons |
A/Z | Arduboy: A button |
S/X/B | Arduboy: B button |
F1 | (Desktop Debugger Only) Save screenshot of entire window |
F2 | Save screenshot |
F3 | Toggle GIF recording |
F4 | (Debugger only) Save snapshot |
F5 | (Debugger only) Pause/Continue |
F8 | Reset |
F11 | Toggle fullscreen |
O | (Debugger only) Settings window |
P | (Debugger only) Toggle player mode |
R | Rotate display |
To invoke from the command line with specific options and game file(s), use the syntax /path/to/Ardens param=value file=game.hex
, where the parameters are the same as in the URL parameters below.
For example:
Ardens palette=highcontrast grid=normal current=true file=game.hex file=fxdata.bin
There is a web build hosted on GitHub pages: to create a link to a playable Arduboy game using Ardens Player, you can follow these patterns:
https://tiberiusbrown.github.io/Ardens/player.html?file=https://example.com/game.arduboy
https://tiberiusbrown.github.io/Ardens/player.html?file=https://example.com/game.hex&file=https://example.com/game.bin
The web builds of the debugger and player accept the following additional URL parameters (e.g., add ¶m1=value1¶m2=value2
to the URL).
Overlays the display with a grid to allow easier disambiguation of adjacent pixels.
Values: none
, normal
, red
, green
, blue
, cyan
, magenta
, yellow
, white
Adjusts the color palette of the display.
Values: default
, retro
, lowcontrast
, highcontrast
If enabled, applies temporal filtering to the display to help properly render grayscale games.
Values: 0
, 1
(Debugger only) Conditionally applies an upscaling filter.
Values: none
, scale2x
, scale3x
, scale4x
, hq2x
, hq3x
, hq4x
(Debugger only) Downsamples by an integer ratio after applying an upsample filter.
Values: 0
, 1
, 2
, 3
Rotates the display in 90 degree increments (directional button mapping is also rotated as if playing on a rotated Arduboy). Values:
0
ornormal
90
orcw
orcw90
180
orflip
270
orccw
orccw90
Sets the emulated audio gain. Value may be in the range 0 to 200, with 100 being the default.
Sets the initial size of the application window. Value should be in the format <width>x<height>
(for example, size=800x400
).
Restricts the display scaling to an integral scaling factor. Defaults to false for the web player, and true for all other platforms.
Enables modeling the display row driver current limit. This effectively darkens rows that have many lit pixels. Defaults to false.
Sets the port to be used for the flash select. Values:
0
ord1
orfx
(default)1
ord2
orfxdevkit
2
ore2
ormini
Sets the type of emulated display. Values:
0
orssd1306
(default)1
orssd1309
2
orsh1106
- SDL (zlib)
- sokol (zlib)
- LLVM Project (Apache v2.0 with LLVM Exceptions)
- Dear ImGui (MIT)
- ImPlot (MIT)
- imgui_markdown (zlib)
- ImGuiColorTextEdit (MIT)
- Simple-FFT (MIT)
- brunexgeek/hqx (Apache v2.0)
- {fmt} (MIT)
- rapidjson (MIT)
- Miniz (MIT)
- Bitsery (MIT)
- stb_image_write (Public Domain)
- GIF encoder (Public Domain)
- AudioFile (MIT)
- Emscripten Browser File Library (MIT)
- Filewatch (MIT)