Troche czasu mineło ...
Projekt w tym czasie mial ze 4 iteracje hardware wiele zmeian formy fizycznej, firmware zostalo przepisane cnajmniej 3 razy, az w koncu osignalem efekt ktory mnie satysfakcjonuje.
Adapter dorobil sie tez wlasniej nazwy i nazywa sie mouSTer. Pierwsza partia probna zostala wyprodukowana i juz sie prawie wysprzedala.
Adapter miesci sie bez problemu w atari ST/Falcon/TT/ETC i jest miejsce na podlaczenie myszki z ogonkiem czy bez.
Po wlozeinu czystego pendrive zostanie tam zapisana krotka instrukcaj obslugi i plik konfiguracyjny. Mozna skonfigurowac prawie wszystko, jednak dla zwyklego uzytkownika nic nie tzreba robic.
Dla Amigi trzeba tylko przestawic tryb pracy myszy na Amiga.
Obsluga myszy, gamepadow (nie do konca oprogramowana) w tym pad od PS4, mozliwosc customizacji firmware dla tworcow gier.
Emulacja Myszy: Atari, Amiga, C1351(jeszcze nie dziala prawidlowo), trackall ATARI (w planach), joystick, autofire(w planach), specjalny tryb rejestrowy dla atari (w planach) i kto wie co jeszcze mi dobrzy i zli ludzie podpowiedza.
Upgrade firmware jest dziecinnie proste, wystarczy wlozyc pendrive z nowym firmware w folderze mouster i odczekac jakies dlugie 5 sekund mouster nada morsem kod R .-. ktory oznacz remove pendrive. Gotowe.
Fw w wersji 1801 generuje taki plik:
; mouSTer - universal USB HID class device to db9 adapter.
; Firmware version: 3.8.1801
;
;
; _/_/_/ _/_/_/_/_/
; _/_/_/ _/_/ _/_/ _/ _/ _/ _/ _/_/ _/ _/_/
; _/ _/ _/ _/ _/ _/ _/ _/_/ _/ _/_/_/_/ _/_/
; _/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
; _/ _/ _/ _/_/ _/_/_/ _/_/_/ _/ _/_/_/ _/
;
;
; ###############################################################################
; # #
; # Features: #
; # Emulates Atari, Amiga and Commodore 1351 mouse. #
; # Can handle up to 16 buttons that can be translated to any action* #
; # Can handle up to 6 axes, that can be translated to any action* #
; # #
; # More to come... #
; # *any action - means any joystick direction or fire/mouse button #
; # #
; ###############################################################################
;
; ###############################################################################
; # User Manual #
; ###############################################################################
;
; ###############################-Blink-Codes-###################################
;
; mouSTer is communicating with you using MORSE CODE or simply blinking the LED.
; List of possible messages:
;
; Very fast blinking: Bootloader is Active and is waiting for USB drive with new firmware.
; If USB drive is not detected within 2s, main program will be launched.
;
; Normal blinking: mouSTer is ready, and is awaiting USB HID device (mouse, game pad etc).
;
; HeartBeat: 2 fast blinks and long pause. mouSTer is alive and operational.
;
; SOS: <... --- ...> Critical problem has occurred. Not possible to recover from this state. Only power cycling is possible.
;
; E: <.> An error has occurred. Remove USB device | Check INI file syntax.
;
; R: <.-.> Operation successfully finished. Remove the USB device.
;
; ##############################-Using-an-USB-Drive-##############################
;
; When USB drive is inserted, mouSTer is looking for a 'mouSTer' folder.
; If the folder does not exists, it will be created and opened.
; Then mouSTer is looking for configuration file: 'mouSTer.ini'
; If exists, configuration will be read and parsed then written to memory.
; If no ini file is present, mouSTer is looking for new firmware file: 'mouSTer.fw'.
; If firmware file if present mouSTer will activate the bootloader, and install new firmware.
; In case if no ini nor firmware is present - mouSTer will write (this) ini file
; with manual and current firmware version on the top - into 'mouSTer.ini' file.
;
; mouSTer is case insensitive.
;
; mouSTer config file: '/mouSTer/mouSTer.ini'
; mouSTer firmware file: '/mouSTer/mouSTer.fw'
;
; most up to date information and the latest firmware is always available at: http://Jil.guru/mouSTer
;
; ##################################-Configuration-###############################
;
[mouster]
; general settings.
;
; mode=
; Operating mode, what device mouSTer will emulate.
; default: auto
; Possible values:
; [00|auto|] - mouSTer will self determine what device to emulate.
; [01|mouse|] - lock to mouse mode only
; [02|gpad|gamepad] - lock to gamepad mode only
; [255|reset_to_default|jmp_$e477] - Load default values for mouSTer configuration and end processing ini file.
mode=00
;
; afRate=
; ##### Function not implemented yet #####
; Auto Fire Rate. Can be used with ANY defined button.
; Define time between consecutive 'auto' presses in 10's of miliseconds.
; fx: afrate=25 => button will be auto pressed every 250ms or 4 timed per second.
; to activate Auto Fire function on button, prepend its definition with * (asterisk)
; default: 25; Possible values:
; [0-250] - numeric value * 10
afRate=25
[mouse]
; mouse emulation settings.
;
; type=
; Mouse type to emulate.
; default: atari
; Possible values:
; [00|atari|ata] - mouSTer will emulate atari mouse.
; [01|amiga|ami] - mouSTer will emulate amiga mouse.
; [02|c1351|c64] - mouSTer will emulate commodore C1351 mouse.
; [03|LAME8|A8] - Special mode dedicated to A8 - #### Function not implemented yet #####
type=00
;
; microstep=
; In another words, DPI divider. Allow you to slow down your mouse to adapt speed to capabilities of old devices.
; Define how many real mouse steps should be translated to one virtual step
; Because division by 0 causes critical error, setting it to 0 causes critical error. Try if you don't belive me.
; default: 10
; Possible values:
; [0-250] - numeric value
microstep=10
;
; mbutton=
; Mapping physical mouse buttons for digital (atari or amiga) mouse emulation mode.
; default: mbutton01->lb, mbutton02->rb, mbutton03->mb, other->none.
; Possible values:
; [00|none|off] - button is ignored
; [01|lb|left] - left button/fire
; [03|rb|right] - right button/paddle A
; [02|mb|middle] - middle button/paddle B
; * Can be defined as an Auto Fire button by prepending * to definition
mbutton01=01
mbutton02=03
mbutton03=02
mbutton04=00
mbutton05=00
mbutton06=00
mbutton07=00
mbutton08=00
mbutton09=00
mbutton10=00
mbutton11=00
mbutton12=00
mbutton13=00
mbutton14=00
mbutton15=00
mbutton16=00
;
; cbutton=
; ##### Function in experimental stage #####
; Mapping physical mouse buttons for c1351 mouse emulation mode.
; default: cbutton01->fire, cbutton02->up, other->none.
; Possible values:
; [00|none|off] - button is ignored
; [01|north|up] - Joystick up/north
; [02|east|right] - joystick right/east
; [03|south|down] - joystick down/south
; [04|west|left] - joystick left/west
; [05|fire|trigger] - joystick fire
; * Can be defined as an Auto Fire button by prepending * to definition
cbutton01=05
cbutton02=01
cbutton03=00
cbutton04=00
cbutton05=00
cbutton06=00
cbutton07=00
cbutton08=00
cbutton09=00
cbutton10=00
cbutton11=00
cbutton12=00
cbutton13=00
cbutton14=00
cbutton15=00
cbutton16=00
[gamepad]
; gamepad emulation settings.
;
; gbutton=
; Mapping physical gamepad buttons for joystick emulation mode.
; GamePad always has a HAT SWITCH that is always mapped to directions.
; default: gbutton01-04 are mapped to fire, other->none
; Possible values:
; [00|none|off] - button is ignored
; [01|n|u] - Joystick up/north
; [02|ne|ur] - Joystick up-right/north-east
; [03|e|u] - joystick right/east
; [04|se|dr] - joystick down/south
; [05|s|d] - joystick down/south
; [06|sw|dl] - joystick down/south
; [07|w|l] - joystick left/west
; [08|nw|ul] - joystick up-left/north-west
; [09|fire|lb] - joystick fire/trigger, mouse left button
; [10|pa|rb] - paddle A, mouse right button
; [11|pb|mb] - paddle B, mouse middle button
; * Can be defined as an Auto Fire button by prepending * to definition
gbutton01=09
gbutton02=09
gbutton03=09
gbutton04=09
gbutton05=00
gbutton06=00
gbutton07=00
gbutton08=00
gbutton09=00
gbutton10=00
gbutton11=00
gbutton12=00
gbutton13=00
gbutton14=00
gbutton15=00
gbutton16=00
;
; axis=
; ##### Function partially implemented - only default settings are available and working. Tested only with PS4 controller #####
; Mapping physical gamepad axes for joystick emulation mode.
; in this mode, axis can be also mapped to PADLE to become true analog axis.
; axes mapped to one direction are triggered at ca. 75% deflection
; axes mapped to double direction are triggered at ca. <25 and >75 deflection
; default: axis01->ew, axis02->ns, others->none
; Possible values:
; [00|none|off] - axis is ignored
; [01|n|u] - axis is one direction north/up axis
; [02|s|d] - Axis is one direction south/down axis
; [03|ns|ud] - axis is true north-south/up-down/Y axis. Default for Y axis
; [04|e|r] - axis is one direction east/right axis
; [05|w|l] - axis is one direction west/left axis
; [06|ew|lr] - axis id true east-west/left-right/X axis. Default for X axis
; [07|pa|paddleA] - axis is directly mapped to paddle A button- analog. Default for axis05
; [08|pb|paddleB] - axis is directly mapped to paddle B button- analog. Default to axis06
; [09|lb|fire] - axis is one direction fire button
; [10|rb|pad] - axis is one direction button mapped to paddle A
; [11|mb|pbd] - axis is one direction button mapped to paddle B
axis01=06
axis02=03
axis03=00
axis04=00
axis05=00
axis06=00
;
; validate=
; ##### Function not implemented yet #####
; Validate if pressed direction button are giving valid joystick direction
; valid states are: n, ne, e, se, s, sw, w, nw or neutral
; invalid states are fx: ns, ew, new ,nesw etc..
; buttons nor paddle never are validated
; default: true
; Possible values:
; [00|false|off] - direction states will be validated
; [01|true|on] - direction states will not be validated
validate=01
Troche fotek:
Smacznego :)
Bym zapomniał
Jesli ktos jest zainteresowany to mozna kupic tutaj: https://retrohax.net/shop/amiga/mouster/ z pierwszej partii zostalo juz tylko kilkanascie sztuk. Nastepna duza partia bedzie za kilka tygodni do miesiaca i wtedy mouSTer powinien byc dostepny na stałe.
:)