1

I just want to share a little code piece I have found out recently. If you want to know if the MVS system is currently in FREE PLAY mode or not (hardware dip 7 on/off > see https://wiki.neogeodev.org/index.php?title=Hardware_DIPs)
you only need to read the byte value from 0x300001. If the value is below 192 (decimal) / C0 (hex) FREE PLAY mode is on and respectively if the value is above 191(decimal) / BF (hex) FREE PLAY mode is off.
You don't need to care about the other hardware dips.

		if(volMEMBYTE(0x300001)<192)
		{
		 	free_play_mode=1 // FREE PLAY HARD DIP ON
		 	
		}else{
			
			free_play_mode=0 // FREE PLAY HARD DIP OFF
		}

Here is a table with all possible hardware dip combinations for reference (ignoring FREEZE DIP 8 ):

the highest "FREE PLAY ON" value is 191
the lowest "FREE PLAY OFF" value is 192
| 0                            |  1                           |  2                           |  3                           |
|------------------------------|------------------------------|------------------------------|------------------------------|
|    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |
|  8 1000 0000  ON    80  128  |  8 1000 0001  ON    81  129  |  8 1000 0010  ON    82  130  |  8 1000 0011  ON    83  131  |
|  9 1001 0000  ON    90  144  |  9 1001 0001  ON    91  145  |  9 1001 0010  ON    92  146  |  9 1001 0011  ON    93  147  |
|  A 1010 0000  ON    A0  160  |  A 1010 0001  ON    A1  161  |  A 1010 0010  ON    A2  162  |  A 1010 0011  ON    A3  163  |
|  B 1011 0000  ON    B0  176  |  B 1011 0001  ON    B1  177  |  B 1011 0010  ON    B2  178  |  B 1011 0011  ON    B3  179  |
|  C 1100 0000  OFF   C0  192  |  C 1100 0001  OFF   C1  193  |  C 1100 0010  OFF   C2  194  |  C 1100 0011  OFF   C3  195  |
|  D 1101 0000  OFF   D0  208  |  D 1101 0001  OFF   D1  209  |  D 1101 0010  OFF   D2  210  |  D 1101 0011  OFF   D3  211  |
|  E 1110 0000  OFF   E0  224  |  E 1110 0001  OFF   E1  225  |  E 1110 0010  OFF   E2  226  |  E 1110 0011  OFF   E3  227  |
|  F 1111 0000  OFF   F0  240  |  F 1111 0001  OFF   F1  241  |  F 1111 0010  OFF   F2  242  |  F 1111 0011  OFF   F3  243  |

| 4                            |  5                           |  6                           |  7                           |
|------------------------------|------------------------------|------------------------------|------------------------------|
|    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |
|  8 1000 0100  ON    84  132  |  8 1000 0101  ON    85  133  |  8 1000 0110  ON    86  134  |  8 1000 0111  ON    87  135  |
|  9 1001 0100  ON    94  148  |  9 1001 0101  ON    95  149  |  9 1001 0110  ON    96  150  |  9 1001 0111  ON    97  151  |
|  A 1010 0100  ON    A4  164  |  A 1010 0101  ON    A5  165  |  A 1010 0110  ON    A6  166  |  A 1010 0111  ON    A7  167  |
|  B 1011 0100  ON    B4  180  |  B 1011 0101  ON    B5  181  |  B 1011 0110  ON    B6  182  |  B 1011 0111  ON    B7  183  |
|  C 1100 0100  OFF   C4  196  |  C 1100 0101  OFF   C5  197  |  C 1100 0110  OFF   C6  198  |  C 1100 0111  OFF   C7  199  |
|  D 1101 0100  OFF   D4  212  |  D 1101 0101  OFF   D5  213  |  D 1101 0110  OFF   D6  214  |  D 1101 0111  OFF   D7  215  |
|  E 1110 0100  OFF   E4  228  |  E 1110 0101  OFF   E5  229  |  E 1110 0110  OFF   E6  230  |  E 1110 0111  OFF   E7  231  |
|  F 1111 0100  OFF   F4  244  |  F 1111 0101  OFF   F5  245  |  F 1111 0110  OFF   F6  246  |  F 1111 0111  OFF   F7  247  |

| 8                            |  9                           |  A                           |  B                           |
|------------------------------|------------------------------|------------------------------|------------------------------|
|    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |
|  8 1000 1000  ON    88  136  |  8 1000 1001  ON    89  137  |  8 1000 1010  ON    8A  138  |  8 1000 1011  ON    8B  139  |
|  9 1001 1000  ON    98  152  |  9 1001 1001  ON    99  153  |  9 1001 1010  ON    9A  154  |  9 1001 1011  ON    9B  155  |
|  A 1010 1000  ON    A8  168  |  A 1010 1001  ON    A9  169  |  A 1010 1010  ON    AA  170  |  A 1010 1011  ON    AB  171  |
|  B 1011 1000  ON    B8  184  |  B 1011 1001  ON    B9  185  |  B 1011 1010  ON    BA  186  |  B 1011 1011  ON    BB  187  |
|  C 1100 1000  OFF   C8  200  |  C 1100 1001  OFF   C9  201  |  C 1100 1010  OFF   CA  202  |  C 1100 1011  OFF   CB  203  |
|  D 1101 1000  OFF   D8  216  |  D 1101 1001  OFF   D9  217  |  D 1101 1010  OFF   DA  218  |  D 1101 1011  OFF   DB  219  |
|  E 1110 1000  OFF   E8  232  |  E 1110 1001  OFF   E9  233  |  E 1110 1010  OFF   EA  234  |  E 1110 1011  OFF   EB  235  |
|  F 1111 1000  OFF   F8  248  |  F 1111 1001  OFF   F9  249  |  F 1111 1010  OFF   FA  250  |  F 1111 1011  OFF   FB  251  |

| C                            |  D                           |  E                           |  F                           |
|------------------------------|------------------------------|------------------------------|------------------------------|
|    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |    8765 4321  FREE  HEX DEC  |
|  8 1000 1100  ON    8C  140  |  8 1000 1101  ON    8D  141  |  8 1000 1110  ON    8E  142  |  8 1000 1111  ON    8F  143  |
|  9 1001 1100  ON    9C  156  |  9 1001 1101  ON    9D  157  |  9 1001 1110  ON    9E  158  |  9 1001 1111  ON    9F  159  |
|  A 1010 1100  ON    AC  172  |  A 1010 1101  ON    AD  173  |  A 1010 1110  ON    AE  174  |  A 1010 1111  ON    AF  175  |
|  B 1011 1100  ON    BC  188  |  B 1011 1101  ON    BD  189  |  B 1011 1110  ON    BE  190  |  B 1011 1111  ON    BF  191  |
|  C 1100 1100  OFF   CC  204  |  C 1100 1101  OFF   CD  205  |  C 1100 1110  OFF   CE  206  |  C 1100 1111  OFF   CF  207  |
|  D 1101 1100  OFF   DC  220  |  D 1101 1101  OFF   DD  221  |  D 1101 1110  OFF   DE  222  |  D 1101 1111  OFF   DF  223  |
|  E 1110 1100  OFF   EC  236  |  E 1110 1101  OFF   ED  237  |  E 1110 1110  OFF   EE  238  |  E 1110 1111  OFF   EF  239  |
|  F 1111 1100  OFF   FC  252  |  F 1111 1101  OFF   FD  253  |  F 1111 1110  OFF   FE  254  |  F 1111 1111  OFF   FF  255  |

2

_mode=1; // FREE PLAY HARD DIP ON }
Why don't you test the bit directly?if (volMEMBYTE(0x300001) & (1 << 6))
{
	free_play_mode=0; // FREE PLAY HARD DIP OFF
}else{
	free_play

0001) >> 6) & 1);Or even shorter: free_play_mode = !((volMEMBYTE(0x30
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3

Interesting - I didn't know before that is possible to test a single bit . Thank you for your advise smile
It brought me to learn a bit more about bitwise operations wink http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/