mirror of
https://github.com/KarolS/millfork.git
synced 2024-12-27 19:30:04 +00:00
Improvements to mouse support. Added the y_coord type. Renamed x_coord module to coord.
This commit is contained in:
parent
7f9bd18bdd
commit
3e33660c2e
@ -26,6 +26,10 @@ There are no built-in encodings now, the include path needs to contain the neces
|
|||||||
|
|
||||||
* **Potentially breaking change!** Changed default encoding for CPC to `cpc_en`.
|
* **Potentially breaking change!** Changed default encoding for CPC to `cpc_en`.
|
||||||
|
|
||||||
|
* **Potentially breaking change!** Changed the type of `mouse_lbm` and `mouse_rbm` to `bool`. Added `mouse_mbm`
|
||||||
|
|
||||||
|
* Renamed the `x_coord` module to `coord`. Added the `y_coord` type and `TALLSCREEN` preprocessor feature.
|
||||||
|
|
||||||
* Allow importing modules from subdirectories.
|
* Allow importing modules from subdirectories.
|
||||||
|
|
||||||
* Allow placing platform definitions in a dedicated subdirectory.
|
* Allow placing platform definitions in a dedicated subdirectory.
|
||||||
|
@ -97,8 +97,12 @@ Some libraries may require that some of these be defined.
|
|||||||
|
|
||||||
* `WIDESCREEN` – 1 if the horizontal screen resolution, ignoring borders, is greater than 256, 0 otherwise
|
* `WIDESCREEN` – 1 if the horizontal screen resolution, ignoring borders, is greater than 256, 0 otherwise
|
||||||
|
|
||||||
|
* `TALLSCREEN` – 1 if the vertical screen resolution, ignoring borders, is greater than 256, 0 otherwise
|
||||||
|
|
||||||
* `KEYBOARD` – 1 if the target has a keyboard, 0 otherwise
|
* `KEYBOARD` – 1 if the target has a keyboard, 0 otherwise
|
||||||
|
|
||||||
|
* `USE_MOUSE_MBM` – set this to 1 if you want to enable middle button support for the mouse.
|
||||||
|
|
||||||
* `JOYSTICKS` – the maximum number of joysticks using standard hardware configurations, may be 0
|
* `JOYSTICKS` – the maximum number of joysticks using standard hardware configurations, may be 0
|
||||||
|
|
||||||
* `HAS_BITMAP_MODE` – 1 if the target has a display mode with every pixel addressable, 0 otherwise
|
* `HAS_BITMAP_MODE` – 1 if the target has a display mode with every pixel addressable, 0 otherwise
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## mouse
|
## mouse
|
||||||
|
|
||||||
The `mouse` module automatically imports the `x_coord` module.
|
The `mouse` module automatically imports the `coord` module.
|
||||||
|
|
||||||
The module contains global variables representing the state of the mouse.
|
The module contains global variables representing the state of the mouse.
|
||||||
If the program is not using any mouse driver, the state of these variables is undefined.
|
If the program is not using any mouse driver, the state of these variables is undefined.
|
||||||
@ -13,19 +13,24 @@ To actually use this module, an appropriate mouse module must be used, such as [
|
|||||||
|
|
||||||
Mouse X position.
|
Mouse X position.
|
||||||
|
|
||||||
#### `byte mouse_y`
|
#### `y_coord mouse_y`
|
||||||
|
|
||||||
Mouse Y position.
|
Mouse Y position.
|
||||||
|
|
||||||
#### `byte mouse_lbm`
|
#### `bool mouse_lbm`
|
||||||
|
|
||||||
1 if the left mouse button is being pressed, 0 otherwise
|
`true` if the left mouse button is being pressed, `false` otherwise
|
||||||
|
|
||||||
|
#### `byte mouse_mbm`
|
||||||
|
|
||||||
|
`true` if the middle mouse button is being pressed, `false` otherwise.
|
||||||
|
Available only if `USE_MOUSE_MBM` is set and non-zero.
|
||||||
|
|
||||||
#### `byte mouse_rbm`
|
#### `byte mouse_rbm`
|
||||||
|
|
||||||
1 if the right mouse button is being pressed, 0 otherwise
|
`true` if the right mouse button is being pressed, `false` otherwise
|
||||||
|
|
||||||
## x_coord
|
## coord
|
||||||
|
|
||||||
#### `alias x_coord`
|
#### `alias x_coord`
|
||||||
|
|
||||||
@ -33,6 +38,12 @@ The type for representing horizontal screen coordinates.
|
|||||||
It's `byte` if the screen is 256 pixels wide or less,
|
It's `byte` if the screen is 256 pixels wide or less,
|
||||||
or `word` if the screen is more that 256 pixels wide.
|
or `word` if the screen is more that 256 pixels wide.
|
||||||
|
|
||||||
|
#### `alias y_coord`
|
||||||
|
|
||||||
|
The type for representing vertical screen coordinates.
|
||||||
|
It's `byte` if the screen is 256 pixels tall or less,
|
||||||
|
or `word` if the screen is more that 256 pixels tall.
|
||||||
|
|
||||||
## null_mouse_default
|
## null_mouse_default
|
||||||
|
|
||||||
This module set the default mouse to null mouse.
|
This module set the default mouse to null mouse.
|
||||||
|
@ -64,6 +64,9 @@ void c1531_mouse () {
|
|||||||
byte value
|
byte value
|
||||||
poke($dc03, 0)
|
poke($dc03, 0)
|
||||||
value = peek($dc01)
|
value = peek($dc01)
|
||||||
mouse_rbm = (value & 1) ^ 1
|
mouse_rbm = bool((value & 1) ^ 1)
|
||||||
if value & 16 == 0 { mouse_lbm = 1 } else { mouse_lbm = 0}
|
mouse_lbm = value & 16 == 0
|
||||||
|
#if USE_MOUSE_MBM
|
||||||
|
mouse_mbm = false
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
12
include/coord.mfk
Normal file
12
include/coord.mfk
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
#if WIDESCREEN
|
||||||
|
alias x_coord = word
|
||||||
|
#else
|
||||||
|
alias x_coord = byte
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if TALLSCREEN
|
||||||
|
alias y_coord = word
|
||||||
|
#else
|
||||||
|
alias y_coord = byte
|
||||||
|
#endif
|
@ -1,16 +1,21 @@
|
|||||||
// Generic module for mouse support
|
// Generic module for mouse support
|
||||||
// Resolutions up to 512x256 are supported
|
// Resolutions up to 512x256 are supported
|
||||||
|
|
||||||
import x_coord
|
import coord
|
||||||
|
|
||||||
// Mouse X coordinate
|
// Mouse X coordinate
|
||||||
x_coord mouse_x
|
x_coord mouse_x
|
||||||
|
|
||||||
// Mouse Y coordinate
|
// Mouse Y coordinate
|
||||||
byte mouse_y
|
y_coord mouse_y
|
||||||
|
|
||||||
// Left mouse button pressed
|
// Left mouse button pressed
|
||||||
byte mouse_lbm
|
bool mouse_lbm
|
||||||
|
|
||||||
|
#if USE_MOUSE_MBM
|
||||||
|
// Middle mouse button pressed
|
||||||
|
bool mouse_mbm
|
||||||
|
#endif
|
||||||
|
|
||||||
// Right mouse button pressed
|
// Right mouse button pressed
|
||||||
byte mouse_rbm
|
bool mouse_rbm
|
||||||
|
@ -5,6 +5,9 @@ import mouse
|
|||||||
void read_mouse() {
|
void read_mouse() {
|
||||||
mouse_x = 0
|
mouse_x = 0
|
||||||
mouse_y = 0
|
mouse_y = 0
|
||||||
mouse_lbm = 0
|
mouse_lbm = false
|
||||||
mouse_rbm = 0
|
#if USE_MOUSE_MBM
|
||||||
|
mouse_mbm = false
|
||||||
|
#endif
|
||||||
|
mouse_rbm = false
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
|
#warn Module x_coord is deprecated, use coord
|
||||||
|
|
||||||
#if WIDESCREEN
|
import coord
|
||||||
alias x_coord = word
|
|
||||||
#else
|
|
||||||
alias x_coord = byte
|
|
||||||
#endif
|
|
||||||
|
@ -39,7 +39,7 @@ nav:
|
|||||||
- stdio module: stdlib/stdio.md
|
- stdio module: stdlib/stdio.md
|
||||||
- err and random modules: stdlib/other.md
|
- err and random modules: stdlib/other.md
|
||||||
- keyboard module: stdlib/keyboard.md
|
- keyboard module: stdlib/keyboard.md
|
||||||
- mouse and x_coord modules: stdlib/mouse.md
|
- mouse and coord modules: stdlib/mouse.md
|
||||||
- joy module: stdlib/joy.md
|
- joy module: stdlib/joy.md
|
||||||
- encconv module: stdlib/encconv.md
|
- encconv module: stdlib/encconv.md
|
||||||
- Platform-dependent definitions: stdlib/frequent.md
|
- Platform-dependent definitions: stdlib/frequent.md
|
||||||
|
Loading…
Reference in New Issue
Block a user