[< back to index](../doc_index.md) # Commander X16-oriented modules **WARNING!** Commander X16 is not yet a finalised design. Therefore, both the device itself and the modules for its support may change at any moment. The X16-oriented modules may be out of date and not support the current design of the device. ## x16_kernal The `x16_kernal` module is imported automatically on the X16 target. Currently, it automatically imports the [`c64_kernal` module](./c64.md). #### `void mouse_config(byte register(a) enable, byte register(x) scale)` Configures the mouse pointer. `enable` should be `1` to enable, `0` to disable and `$ff` to enable without reconfiguration. `scale` should be `1` on 640×480 screens, `2` on 320×240 screens, and `0` to keep the current scale. ## x16_hardware The `x16_hardware` module is imported automatically on the X16 target. #### `void set_ram_bank(byte)` Switches the RAM segment at $A000-$BFFF. #### `void set_rom_bank(byte)` Switches the ROM segment at $C000-$DFFF. #### `void vera_poke(int24 address, byte value)` Writes a byte into the VERA memory space. #### `byte vera_peek(int24 address)` Reads a byte from the VERA memory space. #### `void vera_fill(int24 address, byte value, word size)` Writes `size` bytes into the VERA memory space. #### `void vera_upload(int24 address, pointer source, byte size)` #### `void vera_upload_large(int24 address, pointer source, word size)` Copies `size` bytes from the RAM at address `source` into the VERA memory space at address `address`. #### `struct vera_layer_setup` Hardware register values for a video layer. For VERA 0.7 and 0.8: byte ctrl0 byte ctrl1 word map_base word tile_base word hscroll word vscroll For VERA 0.9: byte config byte map_base byte tile_base word hscroll word vscroll #### `void set_vera_layer1(pointer.vera_layer_setup)` Sets up the layer 1. VERA 0.7 and 0.8 only. On VERA 0.9, use `vera_layer0` directly. #### `void set_vera_layer2(pointer.vera_layer_setup)` Sets up the layer 2. VERA 0.7 and 0.8 only. On VERA 0.9, use `vera_layer1` directly. #### `vera_layer_setup vera_layer0` Direct access to registers for the layer 0. VERA 0.9 only. #### `vera_layer_setup vera_layer1` Direct access to registers for the layer 1. VERA 0.9 only. #### `struct vera_sprite_data` Hardware register values for a sprite: word address word x word y byte ctrl0 byte ctrl1 #### `void vera_upload_sprite(byte sprite_id, pointer.vera_sprite_data source)` Uploads sprite data for given sprite id. #### `const int24 VERA_PALETTE` #### `const int24 VERA_SPRITES` Various addresses in the VERA memory space. #### `const int24 VERA_COMPOSER_CTRL` #### `const int24 VERA_LAYER_1` #### `const int24 VERA_LAYER_2` #### `const int24 VERA_SPRITE_CTRL` Various addresses in the VERA memory space. VERA 0.7 and 0.8 only. #### `void vera_reset()` Resets the VERA. #### `void vera_set_sprites_enable(bool enabled)` Enables/disables sprites. #### `void set_border(byte color)` Changes the color of the border. ## x16_joy The `x16_joy` module implements a joystick driver compatible with the `joy` module. #### `void read_joy1()` Reads the joystick from the port 1. #### `void read_joy2()` Reads the joystick from the port 1. #### `void read_also_joy1()` Reads the joystick from the port 1 and adds its readouts to the current readouts. #### `void read_also_joy2()` Reads the joystick from the port 2 and adds its readouts to the current readouts. #### `byte input_*` The following variables have the value 1 if the key is pressed and 0 if not: **Warning:** The assignment of NES controller buttons and keyboard keys may change in the future. Variable | SNES controller | NES controller | Keyboard (joy 1 only) ---------------|-----------------|----------------|---------------------- `input_a` | A | | `input_b` | B | A | Ctrl `input_x` | X | B | Alt `input_y` | Y | | `input_start` | Start | Start | Enter `input_select` | Select | Select | Space `input_l` | L | | `input_r` | R | | `input_b` is an alias for `input_btn`. Single-button games should use `input_btn` for compatibility. #### `x16_joy_type joy_type` The type of the last read joystick. One of `joy_none`, `joy_nes`, `joy_snes`, `joy_keyboard`. ## x16_joy1_default module Defines the joystick in port 1 as the default joystick. #### `alias read_joy = read_joy1` ## x16_mouse The `x16_mouse` module implements a mouse driver compatible with the `mouse` module. Before using this, you may want to call `mouse_config` from the `x16_kernal` module. #### `void read_mouse()` Reads the state of the mouse.