HAL Printer Details (85)
The HAL printer hooks into the output video feed and prints what is displayed on-screen.
The smartcard reader, button, etc. are directly tied to the printer board and have no software interface. A screen overlay is used to display "Now Printing" and the progress stars.
Implemented like any other Controller Pak. Controller only needs to pass a Status test and show 'slot filled'.
8000 power / init; write a block of 0x85 to confirm
C000 control; only the last byte in the 0x20 block is read
01 Erase memory (equiv. to the "monitor" button).
02 Save image (equiv. of the "memory" button). Reads for 08 following until unset (delay 200 cycles between; allow min ~1 second for OSD preview to clear).
04 Print. Reads for 08 following until unset (delay 20 cycles between).
10 Error: no images to print. [currently unknown behavior; may power on or initialize]
5A Trigger a soft reset if a credit exists; handled by the board via the 2-cart adapter.
CC Lock, to prevent payment-triggered reset. [confirm. arguably also turned the light on]
33 Unlock. [confirm. arguably also turned the light off]
08 Busy; software loops until response not 8. Presumed "okay" value is 00.
Usage in Snap/Stadium:
*All write requests read the last byte from C000 until it is not 08 before writing the command. Only the last byte in the block (0x1F) is read or written.*
*Snap kiosk carts require the 8MB expansion pak, though other carts may not.*
*The printer must be plugged into port 4, though this only a software requirement, not a hardware one.*
After pictures are selected in the gallery the game is saved. At the start of the save process cmd CC is set, at the end cmd 33 is sent. These lock the system while saving, preventing a reset events.
Once saved, the message to "press A if a print credit exists" is posted. Doing so sends cmd 5A. Software has no access to the card reader or reset feature. Instead, on receiving cmd 5A the board tests if a credit is available, triggers a soft reset via the cart adapter, and decrements the credit from the card. Chances are pressing the console's reset button is a creditless way of achieving the same thing.
Software handles the soft reset by testing if a print job was saved. If not cmd 10 is sent and the game boots normally.
Printing consists of sending cmd 01 to clear all stored images, followed by a delay of 200 cycles. It is presumed the device is in "Album: 16" mode.
Full-screen images of each picture are rendered on screen by software. Once rendered, there is a delay of 200 cycles and cmd 02 is sent to store the image in memory. C000 is read repeatedly until not 08 with a delay of 200 cycles inbetween each read.
After the final image, cmd 04 is written and printing begins. C000 is read repeatedly with a delay of 20 cycles inbetween until not 08. Once no longer 08, printing is assumed complete and the game continues to the Attract sequence.
Printer itself is a variant of the Panasonic NV-MHX300-C / NV-MPD7.
The NT-300 is normally set to "Album: 16" mode, saving screencaps of video input to internal memory. You can do this manually as well using the "memory" button on the control panel. The stored image is displayed for about one second before returning display to the screen. After 16 captures you can press print. Individual images are removed with the "clear" button, and all images are erased using "monitor".
There are also 4 & 9 picture album settings available for the more daring, or disable album and "just print".
Other modes exist as well. "Multi" mode prints one image 4, 9, or 16 times. "Strobe" captures 4, 9, or 16 frames taken at one of three rates. The "swing" setting is overspecialized for sports swings (golf, tennis, etc.) switching from a long interval at the start and end to a short interval in the middle. There's also options to add titles and trimming frames.
How much of this is exposed through the board's interface is an open question.
Titles known to use the HAL printer:
The NPO* titles - international Pokemon Stadium games, but not Japanese titles:
Pokemon Stadium (Europe)
Pokemon Stadium (Europe) (Rev A)
Pokemon Stadium (France)
Pokemon Stadium (Germany)
Pokemon Stadium (Italy)
Pokemon Stadium (Spain)
Pokemon Stadium (USA)
Pokemon Stadium (USA) (Rev A)
Pokemon Stadium (USA) (Rev B)
All Pokemon Snap variants (NPF*), including kiosk version (NPHE):
Pokemon Snap (Australia)
Pokemon Snap (Europe)
Pokemon Snap (France)
Pokemon Snap (Germany)
Pokemon Snap (Italy)
Pokemon Snap (Japan)
Pokemon Snap (Spain)
Pokemon Snap (USA)
Pokemon Snap Station (USA) (Promo)
Itoi Shigesato no Bass Tsuri No. 1 Kettei Ban! (Japan) checks for the printer on port 4 but does not appear to use it.