Lilly's Saga - The Stones of Evergreen

Page 14/17
7 | 8 | 9 | 10 | 11 | 12 | 13 | | 15 | 16 | 17

By Bengalack

Hero (660)

Bengalack's picture

28-09-2022, 20:08

Thanks to our eminent composer, we now have a trailer that shows other sides of our game. Check it out Smile

https://youtu.be/cvAFpHXmf4s

By Mumbly

Expert (111)

Mumbly's picture

28-09-2022, 20:13

It’s gonna be great !

By aoineko

Paladin (695)

aoineko's picture

28-09-2022, 20:56

Nice trailer. Can't wait to play this game!

By SjaaQ

Champion (365)

SjaaQ's picture

07-10-2022, 15:29

On OpenMSX, when you have a mouse connected, the game cannot be started. Maybe this is a known issue?

By Bengalack

Hero (660)

Bengalack's picture

07-10-2022, 21:48

SjaaQ wrote:

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!

By gdx

Enlighted (5829)

gdx's picture

08-10-2022, 10:09

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

I haven't opened the cartridge to see what FlashRom it is.

By sd_snatcher

Prophet (3593)

sd_snatcher's picture

08-10-2022, 15:44

Bengalack wrote:
SjaaQ wrote:

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. :)

By Bengalack

Hero (660)

Bengalack's picture

09-10-2022, 16:07

sd_snatcher wrote:

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.

By aoineko

Paladin (695)

aoineko's picture

09-10-2022, 16:25

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

By ro

Scribe (4817)

ro's picture

09-10-2022, 18:50

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.

Page 14/17
7 | 8 | 9 | 10 | 11 | 12 | 13 | | 15 | 16 | 17