Thanks to our eminent composer, we now have a trailer that shows other sides of our game. Check it out
It’s gonna be great !
Nice trailer. Can't wait to play this game!
On OpenMSX, when you have a mouse connected, the game cannot be started. Maybe this is a known issue?
On OpenMSX, when you have a mouse connected, the game cannot be started. Maybe this is a known issue?
Thanks. This was not known. The quick solution is to open the console and type “unplug joyporta” (on a physical machine one needs to unplug too). I have not been aware of how to detect mice. I actually never thought of this.
I have a feature where you do not have to decide whether you want to play using keyboard or joystick. You can use both and switch at any time.
If it is easy to detect the mouse, I can ignore the joyport “signals” as long as they are mouse-signals. Would be cool!
The game works fine on my turbo R using a prototype of multi-mapper megaFlashRom. This cartridge is very special because the FlashRom size is 2048kB when the SCC mapper is used but a segment is missing for other mappers. Luckily the game size is not 2MB.
I haven't opened the cartridge to see what FlashRom it is.
On OpenMSX, when you have a mouse connected, the game cannot be started. Maybe this is a known issue?
If it is easy to detect the mouse, I can ignore the joyport “signals” as long as they are mouse-signals. Would be cool!
Tip: yes, there is an easy way to detect it. :)
Tip: yes, there is an easy way to detect it. :)
Well, I've looked at it. I totally appreciate the work done here, to map out things. It is really great! But "easy" might be to exaggerate a bit :D ? In my case, this seems complex, if not impossible.
First; I don't use BIOS in the game. So, I have to go for the ports. That is ok, it seems. But then it becomes complex (given that I understand this correctly). My design of the game is that, the player should, at any given time, be able to play using joystick or keyboard. Both inputs should be active at the same time. I'm not going to bother the player with setting the preferred input source.
So, this means that I need/want to identify a non-joystick EVERY frame. So, first I thought this was ok, as I hoped that the fingerprints would include values that otherwise would be impossible for a joystick. Like UP and DOWN pressed at the same time. But fingerprints from paddles are perfectly valid joystick values (UP pressed). Likewise for "Touchpad(2)". So, no. And then: the fingerprints needs to be sampled when the input device is not in use. I cannot know if the user is using the input device or not? So, no.
And then it doesn't help that the detection is a bit cpu-consuming too, as one have to do busy waiting between the fingerprint values (not sure if I have to wait here - not sure how this timing works).
Maybe just state that mouse needs to be unplugged for this game... (and for most msx games)?
But maybe I misunderstood things ofc, but this one seemed tricky.
For the no-BIOS part, you can use my function Input_Detect()
(https://github.com/aoineko-fr/MSXgl/blob/main/engine/src/inp...).
But yes, it's only working when device is in idle state.
You can do the check once at game launch (the probability that the player moves the device at this moment is low imo).
Somehow, I feel the mouse bug is something else. I too use a general keyboard/stick read-out to navigate in software and I'm having a mouse connected all the time. no worries there. At least in my current openMSX set-up, but also in the past using real hardware.
Perhaps this helps, my functions for that:
; +----- Keyboard/Joystick -----+ ;Read Stick(s) and call bound function ;in: HL=functionPointerTable RDSTCK: CALL RDS_KB ; Read KB AND #0F CP 15 LD C,0 CALL Z,RD_JOY ; Read JS 1 AND #0F CP 15 LD C,#40 CALL Z,RD_JOY ; Read JS 2 AND #0F LD C,A LD B,0 ADD HL,BC ADD HL,BC LD A,(HL) INC HL LD H,(HL) LD L,A OR H RET Z JP (HL) ; Read Joystick value (port 1 or 2) RD_JOY: LD A,15 OUT (#A0),A IN A,(#A2) AND %10001111 ; interface 1 OR C ; C=JS nr OUT (#A1),A LD A,14 OUT (#A0),A IN A,(#A2) RET ; read KeyBoard arrows RDS_KB: LD A,8 CALL RDKMAT RLCA RLCA RLCA SET 3,A ; swap bits 2,3 (L->R->L) BIT 2,A JP NZ,RSKB.0 RES 3,A RSKB.0: SET 2,A BIT 7,A RET NZ RES 2,A RET ; Read trigger 1 RDTRG1: LD A,8 CALL RDKMAT AND #01 RET Z ; Space (KB) LD C,0 CALL RD_JOY ; fire A (JS#1) AND #10 RET Z LD C,#40 CALL RD_JOY ; fire A (JS#2) AND #10 RET ; Read trigger 2 RDTRG2: LD A,6 CALL RDKMAT AND #04 RET Z ; graph LD C,0 CALL RD_JOY ; fire A (JS#1) AND #20 RET Z LD C,#40 CALL RD_JOY ; fire A (JS#2) AND #20 RET ; Wait for not_trig KILTRG: CALL RDTRG1 JR Z,KILTRG CALL RDTRG2 JR Z,KILTRG RET
The input in RDSTCK is just a 16 word table with addresses to call on direction 0-15. But have a look at RDJOY: function.