What is a solution to representing bits physically? (on a cartridge, to be read by the cartridge holder... like a printer)
The simplest common solution similar in style to your ideas is to make a PCB with a number of contact pads and wiring them together in different patterns. You can then read out the wiring pattern by connecting each one to a GPIO pin on your host device (must have input with pullup or pulldown as an option) and driving one pin and reading the others.

(It would also work with a plug instead of a custom PCB; the choice depends on what the best mechanical interface for your cartridge is.)

If you use diodes instead of wires then you can have as many bits as pairwise combinations of contacts (so 8 bits requires only 5 contacts); if you want a simple parallel read scheme then you would use 9 contacts (1 "power supply" and 8 data lines).

In any of those cases you can build it with switches instead of hardwiring for testing purposes.



If you want to use fewer GPIO pins, store more data, or have it be writable electrically, then you would use some type of memory chip communicating over a serial interface, such as an I2C EEPROM. This is a common approach for "identify the attached peripheral" applications that want many bytes of data but do not need a microcontroller in the peripheral.




  Another design I thought of can differentiate 16 distinct currents based on 4 switches and 4 strategically chosen resistor values. 


Using resistances to communicate more bits over a single line can be done (there is a classic technique of multiplexing pushbuttons this way) but in your case it can be disrupted by unintended resistance in the cartridge connection. You could fix that in principle by using four-terminal sensing, also known as a Kelvin connection, but at that point it's probably easier to use multiple digital lines instead.