Emulator - AbstractPolygon/vcs-game-maker-absply GitHub Wiki

The collapsible panel on the right side of the app runs your compiled ROM live in a built-in emulator, and shows how much of the ROM's capacity your project is using. Two emulators are built in: 6502.ts (the default: fast, with screen effects and the debug info below) and gopher2600 (cycle-exact). The Emulator Settings button picks between them.

image

​chevron right icon chevron left icon
Show/Hide (the chevron tab on its edge) — collapses the whole pane to free up more space for the block editor, or brings it back.

  • Drag the pane's left edge to resize it.
  • When the pane is too narrow for the tool icons next to the Refresh emulator button, all of them move to a line below it, and the button and the icons are both centered.

Refresh emulator / Full screen / Screenshot

​refresh icon
Refresh emulator reloads the whole app page - a fix for the rare case where the emulator preview itself disappears or gets stuck. You'll need to click Update ROM again afterward, since reloading the page clears the emulator's currently loaded ROM.

​fullscreen icon
The full screen icon (left of the camera icon) shows the emulator picture full screen. Press Esc to leave.

​camera outline icon
The camera icon (left of the keyboard mapping icon) saves what the emulator is showing as a PNG named screenshot-<date>-<time>.png. If no ROM has been run yet, it says there is no picture to capture.

Keyboard mapping

​keyboard outline icon
The keyboard mapping icon opens the keyboard mapping dialog, where you can rebind which keys drive each player's joystick directions/fire button and Keypad Controller digits. The default keys are listed on the Hotkeys page.

  • Click a control, then press the new key on your keyboard to bind it - Escape cancels.
  • Rebinding a key clears it from wherever it was bound before, since two controls of the same type can't share one key.
  • Reset to defaults restores the built-in bindings. Bindings are remembered across sessions.
  • Keypad bindings only take effect while a player's port is actually in Keypad mode (switched automatically when your project uses Keypad blocks); joystick bindings are used the rest of the time.
  • Mapped keys are only captured while you're actually interacting with the emulator - typing in a text field elsewhere in the app (like the Project tab's Title field) works normally, even if what you're typing happens to include a mapped key like a letter or the space bar.

Emulator settings

​cog outline icon
The gear icon (right of the keyboard mapping icon) opens Emulator Settings, kept as an app setting (not in the project file):

  • Emulator — 6502.ts or gopher2600. Both play Keypad Controllers on either port: with a keypad plugged into a port (switched automatically when your project uses Keypad blocks), the keys bound to its digits are the keypad's buttons.
  • TV signal — Off (raw pixels), Composite or S-Video.
  • Phosphor glow, Scanlines and Gamma — sliders for the lingering of bright pixels, the dark gaps between scanlines and the brightness curve. The effects cost nothing while they are all off.
  • Scaling — Sharp pixels, Smooth, or Quasi-integer (sharp, even pixels).
  • Full screen resolution — the tallest picture full screen draws (Native or 2160p, 1440p, 1080p, 720p); a lower one is lighter on the GPU and is scaled up to the display. Full screen scaling — same as the window, or Sharp pixels, Smooth or Quasi-integer.
  • CPU accuracy — Cycle exact models every bus access; Instruction is about 15% faster. Changing it restarts the running ROM.
  • The TV signal, effects, scaling, full screen and CPU accuracy settings apply to 6502.ts only; Reset to defaults puts every setting back.

Debug info (6502.ts emulator)

With the 6502.ts emulator selected, two more icons sit left of the keyboard mapping icon:

image

​bug outline icon
Bug icon — turns the debug overlay on or off. It is blue while on. The overlay sits at the top left of the screen (also in full screen) and shows the registers (PC, A, X, Y, S and the flags), the scanline count and frame number, and how many of the frame's CPU cycles the 6507 actually ran (the rest it spent waiting for the end of a scanline, WSYNC). The busy count is exact with the Cycle exact setting only.

image

​format list checks icon
List icon (Debug Info) — opens a popup to choose which variables the overlay shows as a table of names with their values (decimal, with hex beside it). The list comes from the last build, so click Update ROM first. Each section (your variables, the ones blocks require, system ones) has Select all and Select none; a filter box narrows the list. A variable sharing its slot with a title screen variable shows the same value as it, under the title screen name while the Titlescreen Kernel is running and under the game name the rest of the time.

The chosen variables and the list are saved in the project file and come back when it is opened.

While a ROM compiles, the emulator and its sound stop until the build finishes.

The game screen

image

The live emulator display itself. Below the screen are buttons representing the 2600's switches: Power (turns green while on), Color/B&W, P1/P2 difficulty, and Select/Reset.

ROM buttons

  • Update ROM / ROM up to date — compiles your current project into a ROM and loads it into the emulator. Shows "Update ROM" (highlighted) whenever your blocks have changed since the last build; "ROM up to date" once it's current.
  • Test in Stella — (desktop app only) launches your last-compiled ROM directly in the Stella emulator, using a Stella install path configured elsewhere in the app. Disabled until a ROM has been compiled at least once.
  • Save ROM — saves the last-compiled ROM as a .bin or .a26 file (the same raw ROM image either way; .a26 is the usual name for an Atari 2600 ROM). In browsers with a save window that has a "Save as type" list (Chrome, Edge) you pick the type there; in others the button opens a small menu to pick .bin or .a26. The file is named after the Project tab's Title and Version (for example My_Game_1-0-0), or compiled-rom when there is no Title. Disabled until a ROM has been compiled at least once.

ROM capacity

A live summary of how much of the compiled ROM's space your project is using, updated every time you build:

  • A capacity line and progress bar showing overall space used, turning a warning color as it gets close to full.
  • Total Variables — how many of the ROM's limited RAM variable slots are in use.
  • System reserved — variable slots reserved by the app itself (e.g. for features like text scrolling or fades), each with the feature that claimed it.
  • Required by blocks — variable slots reserved because specific blocks in your project need them.
  • User defined — your named variables (Variables category on the Actions tab).
  • A per-bank breakdown (for multi-bank ROMs) showing how much free space each bank has left, and what's using the rest.
⚠️ **GitHub.com Fallback** ⚠️