1
0
mirror of https://github.com/KarolS/millfork.git synced 2024-06-18 00:29:30 +00:00
millfork/docs/stdlib/x16.md
2020-05-01 15:19:25 +02:00

184 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[< 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.