High-side switching 12V with BJT/MOSFET
If you are serious about the 800mA high side sourcing current compliance and want to stay with BJTs, you'll need something more. A TIP32C is pretty cheap and sold by Jameco for 39 cents (+shipping) or go onto ebay for still cheaper sources. It comes in a TO220 case, which is what you want here.

Keep in mind that VCEsat can be high in these power BJTs, and you should plan on about 0.5V or so. This suggests about 500mW (including base current) dissipation. (For most BJTs in a TO220 case, I wouldn't worry so much about a heat sink at this level. It should be okay in air or pressed down on a board. But it's still a good idea to check the data sheet, just to be sure.)

The circuit could look about like this:







simulate this circuit &ndash; Schematic created using CircuitLab

Q2 is operating as a current sink here. I'm assuming there is about 100 ohms of output impedance in your Raspberry pi output pin (likely) so I don't think you need to worry much about ringing. R1 is there to turn Q1 OFF when Q2 goes OFF. It's value isn't critical. R2 probably could be about 60 ohms, but 56 is a standard value. RLOAD is just a dummy to represent your 800mA load.

Your output won't quite reach 12V, of course. There will be a VCEsat drop of perhaps 0.5V, so only expect about 11.5V or so there. Hopefully, that's okay.

In the above case, the 2N3904 will ALSO be dissipating heat. I figure about 9V across VCE at 43mA is close to 400mW, if operated continuously. This worries me, though you might skate by with it. It does suggest perhaps a different choice for Q2 that is also in a TO220, though.

Or else a different topology (one requiring one more resistor and a different arrangement.) Something perhaps like this:







simulate this circuit

In this case, Q2's collector will be low (around 0.2V) when ON and the VBE of Q1 will be about 1V or so. So the drop across R3 will be about 10.8V, roughly. With 40mA, this implies a value of about 270 ohms. I set R2 to provide about 3mA then, too.

Q2 will only be dissipating nearer now to 200mV at 43mA, so about 8mW. Much, much better and this will be zero problem for any small signal NPN BJT. But R3 will now be dissipating perhaps a quarter to a half watt or so (10.8V across it), so you need to make sure it is sized to 1/2 watt or more.