I thought I'd try to see if I could get a "slider" adjuster working:

The PORT_ADJUSTER looked very promising but it was limited to 0 to 100. What if I did a define of my own that had a mask of 0xffff for 16 bits?

If I make my own PORT_ADJUSTER_16MASK macro based on the PORT_ADJUSTER macro in src/emu/ioport.h and change the mask, I can get 16 bits.

It seems to work but it says percent in the display.

So now I have an adjuster that goes from 97 to 2559 and I can hit ALT+LEFT or ALT+RIGHT arrow to go to each end of the full extent and CTRL+ARROWS to change the value faster.

#define PORT_ADJUSTER_16MASK(_default, _name)					\
        configurer.field_alloc(IPT_ADJUSTER, (_default), 0xffff, (_name)); \
        configurer.field_set_min_max(0, 100);

static INPUT_PORTS_START( tablet_adjusters )
        PORT_START("Position Min") /*  */
        PORT_ADJUSTER_16MASK(97,"Tablet Position Min")

        PORT_START("Position Max") /*  */
        PORT_ADJUSTER_16MASK(2559,"Tablet Position Max")
//      PORT_BIT(0xffff, 0x00,  IPT_ADJUSTER)  // this didn't work

static INPUT_PORTS_START(gfxall)

and I can read the adjusters with:

    m_tabletmin = ioport("Position Min")->read();
    m_tabletmax = ioport("Position Max")->read();
    printf("ioport adjusters %x %x\n",ioport("Position Min")->read(),ioport("Position Max")->read());

and with a little Applesoft program we can see the values change in realtime with the sliders:
2559 * 3 = 7677

'     NEW\n'..
'      90 PR#2:PRINT"D,M1" : REM DEFAULT, MIXED MODE PAGE 1\n'..
'     100 PR#2:PRINT"P,X0,Y0,S1"\n'..
'     110 IN#2:INPUT "";X$,Y$,Z$:IN#0\n'..
'     120 VTAB 22:PRINT X$Y$Z$\n'..
'     125 POKE -16368,0\n'..
'     128 A=FRE(0) : REM APPLESOFT NEEDS GC OR HIRES PAGE GETS CLOBBERED\n'..   -- fre needs a parameter
'     140 GOTO 110\n'..
'     RUN\n')

[Linked Image from i.imgur.com]

Last edited by Golden Child; 04/18/19 12:04 AM.