Mednafen

Apple II/II+/IIe/Enhanced IIe Documentation

Last updated March 19, 2024
Valid as of 1.32.1

Table of Contents:

Introduction

Mednafen's "apple2" emulation module supports emulation of Apple II, II+, IIe, and Enhanced IIe. It is geared more towards running individual software releases independently of other software releases; it can be used differently, but the abstractions chosen may make it rather awkward.

The model emulated by default is the Apple II/II+, but it can be changed by altering the apple2.model setting, or by using the "model" directive in a MAI file. Note that save states and modified disk image data are not shared between different emulated models(barring unlikely hash collisions), to avoid emulated software malfunctions that may, among other effects, corrupt emulated disk data.


MAI System and Disks Configuration File

Single-disk single-side software can be loaded directly. The recommended way to use multi-disk or multi-side software is to create a special configuration file, saved with the file extension "mai", to be loaded with Mednafen. Alternatively, the automatic multiload feature can be used with ZIP archives.

Mednafen does not write to the floppy disk image files specified via the MAI configuration file. Modified disk data is automatically saved into and loaded from files in Mednafen's nonvolatile memory/save game directory. The ID/hash used in naming these files is calculated by hashing data generated based on the contents of the disk image files and any firmware files referenced in the MAI configuration file, along with the values of settings that control the hardware configuration.

In addition to loading a naked MAI file, Mednafen supports automatically loading a MAI file from within a ZIP archive. Any referenced files(e.g. floppy disk images and override firmware) must also be in the same ZIP archive. In regards to Mednafen selecting the correct file to open, the ordering of the MAI file in the ZIP archive in relation to other files doesn't matter.

Sample MAI configuration file:

MEDNAFEN_SYSTEM_APPLE2
# Above signature must be the first line.
#
# File paths specified in this file are relative to the directory containing
# the MAI file.
#

#
# Specify nominal model of Apple II to emulate.
#
#  Options: ii ii+ iie iie_enh
#    ii:  Apple II with 48KiB RAM, Integer BASIC, AppleSoft BASIC ROM card, and Autostart.
#    ii+: Apple II+ with 64KiB RAM, AppleSoft BASIC, and Autostart.
#    iie: Apple IIe with 128KiB RAM and DHGR support.
#    iie_enh: Enhanced Apple IIe with 128KiB RAM and DHGR support.
#
#  Default: ii+
#
model ii+

#
# Uncomment to specify available RAM, in KiB.
#
#  Options for Apple II/II+: 4 8 12 16 20 24 28 32 36 40 44 48 64
#  Options for Apple IIe: 64 65 128 320 576 1088 3136
#
#  Specifying "64" enables emulation of a RAM-based 16K language card.
#
#  Specifying "65" enables emulation of a IIe 80-column text card.
#
#  Specifying "128" enables emulation of a IIe extended 80-column text card.
#
#  Specifying "320" or higher enables emulation of a IIe RamWorks III-type card,
#    usable in some productivity software.
#
#  Defaults:
#    ii:   48
#    ii+:  64
#    iie: 128
#    iie_enh: 128
#
#ram 64

#
# Uncomment to select Apple II/II+ firmware.
#
#  Options for Apple II/II+: integer applesoft
#  Options for Apple IIe: (setting ignored)
#
#  Ignored if "firmware.override" is specified.
#
#  Defaults:
#    ii:  integer
#    ii+: applesoft
#
#firmware applesoft

# Uncomment to specify custom system firmware.
#
#  Apple II/II+: 12KiB, located at $D000-$FFFF
#  Apple IIe: 16KB, located at $C000-$FFFF
#
#  Optional; specify to override the firmware loaded via Mednafen's firmware
#  loading system.
#
#firmware.override "apple2.rom"

#
# Uncomment to select ROM card firmware for Apple II/II+.
#
#  Options for Apple II/II+: none integer applesoft
#  Options for Apple IIe: (setting ignored)
#
#  ROM card emulation is disabled if "none" is selected(regardless of
#  the "romcard.override" setting), or if 64K of RAM is selected
#  by the "ram" setting.
#
#  Defaults:
#    ii:  applesoft
#    ii+: integer
#
#romcard integer

# Uncomment to specify custom ROM card firmware for Apple II/II+.
#
#  Optional; specify to override the firmware loaded via Mednafen's firmware
#  loading system.
#
#  Note: Ignored if "romcard" is set to "none", or if 64K of RAM is selected
#  by the "ram" setting.
#
#romcard.override "applesoft.rom"

#
# Uncomment to specify custom Apple IIe Video (Character Generator) ROM, 4KiB.
#
#  Optional; specify to override the video ROM loaded via Mednafen's
#  firmware loading system.
#
#video.override

#
# Uncomment to specify custom Apple IIe Keyboard ASCII Mapping ROM, 2KiB.
#
#  Optional; specify to override the keyboard ROM loaded via Mednafen's
#  firmware loading system.
#
#kbmap.override


#
# Select game input device(s).
#
#      none: no game I/O devices
#
#   paddles: two rotary dial paddles
#
#  joystick: 2-axis, 2-button joystick, with selected default resistance
#            setting(1 through 4).
#
#   gamepad: 2-axis(D-pad), 2-button gamepad, with selected default resistance
#            setting(1 through 4).
#
#     atari: two Atari digital joyport joysticks
#            Note: Incompatible with Apple IIe, due to conflicts with the
#            Open Apple and Closed Apple keys.  As a partial workaround, hold
#            the first emulated joystick's D-pad in the left position upon
#            power-on/startup/reset.
#
# Examples:
#  gameio none
#  gameio paddles
#  gameio joystick 2
#  gameio gamepad 2
#  gameio atari
#
# Default: joystick 2
#
gameio joystick 2

#
# Specify (maximum) resistance, in Ω, for each of the four selectable
# resistance settings for the "joystick" and "gamepad" devices.
#
#  Default: 93551 125615 149425 164980
#
gameio.resistance 93551 125615 149425 164980

#
# Enable Disk II in Slot 6(with two 5.25" disk drives attached).
#
#   Default: 1
#
disk2.enable 1
disk2.drive1.enable 1
disk2.drive2.enable 1

# Select 16-sector Disk II firmware.  Options are: 13sec 16sec
#   Effectively ignored if "disk2.firmware.override" is set.
#
#   Default: 16sec
#
disk2.firmware 16sec

# Uncomment to specify custom Disk II firmware.
#
#  Optional; specify to override the Disk II firmware loaded via Mednafen's
#  firmware loading system.
#
#disk2.firmware.override "disk2_dos33_boot.rom" "disk2_dos33_seq.rom"


#
# Define available floppy disks (or sides).  Disk identifiers(the part
# immediately after "disk2.disks." must only contain characters a-z, 0-9, and _)
#
# Fields: name filepath write_protect(optional)
#  If the write_protect field is omitted, then the default write protect setting
#  for the format is used.  For WOZ disk images, write protect is explicitly
#  specified in the INFO header.  For other formats, write protect defaults
#  to off(0).
#
disk2.disks.game1 "Disk 1 - Boot" "SomeGame - Disk 1.dsk" 1
disk2.disks.game2 "Disk 2" "SomeGame - Disk 2.dsk" 1
disk2.disks.game3 "Disk 3" "SomeGame - Disk 3.dsk" 1
disk2.disks.save "Save Disk" "SomeGame - Save Disk.dsk" 0

#
# Specify which disks are allowed to go into which drive.
#
# Prefix the disk identifier with a * to start with that disk inserted.
#
# Don't insert the same disk (identifier) into different
# drives at the same time unless you're some sort of spacetime wizard.
#
disk2.drive1.disks *game1 game2 game3
disk2.drive2.disks *save

#
# Uncomment to enable ProDOS-compatible, high-level HDD emulation in specified
# slot with specified hard disk drive image.
#
# The hard disk drive image must be a multiple of 512 bytes, and no larger
# than 33,553,920 bytes(65535 * 512).
#
# Slot must be either 1 or 7.
#
# Fields: slot filepath write_protect
#
#   Default: (undefined/disabled)
#
#hdd 7 "ProDOS.hdv" 0


Floppy Disk Images

If a virtual floppy disk image in memory has been modified(written to) during the course of emulation, the in-memory floppy disk image will be saved into a separate file under Mednafen's nonvolatile memory directory upon exit. On subsequent invocations with the same floppy disk image(or MAI file and its associated floppy disk images), this separate floppy disk image will be transparently loaded at startup and its data used in lieu of the source floppy disk image when creating the virtual floppy disk image in memory.

The following 5.25" Apple II floppy disk image formats are supported:

Extension:Size(Bytes):Description:
d13116480Apple DOS 13 sectors/track
dsk
do
143360Apple DOS-order 16 sectors/track
po143360Apple ProDOS-order 16 sectors/track
woz(variable)https://applesaucefdc.com/woz/


Firmware/BIOS

Place the correct firmware image files in the correct location.

If you want to use custom or modified firmware, create and load a MAI configuration file.

If you make a linear dump of your Disk II P6 sequencer ROM(s) through the P5 socket via a program running on an Apple II, remember to process the resulting data to swap: A7 and A5, D4 and D7, D5 and D6.

In contrast, the required Disk II P5 boot ROM format has its data arranged how it appears to the 6502(i.e. as if it's just linearly dumped with a simple program running on an Apple II).

Apple II/II+:
Filename:Purpose:SHA-256 Hash:
apple2-int-auto.romApple II Integer BASIC and Autostart System ROMs, concatenated(8KiB).

Consists of 2KiB ROMs(in order, with SHA-256 hashes):
(TODO: verify 341-0001, 341-0002, 341-0003 hashes)


341-0001
(3a5137fa95b0a2e4a60a975a97d04abd89425295ee352aa17a3da348764d4f27)

341-0002
(0ec63e5737b33f133166a3d55ed28a367a671f03960d9d57fb8598a9de6a437b)

341-0003
(2ba5e31366045e5f03255f147550112a5974e3a36ed21ce585917f7c5be12869)

341-0020
(29465303e7844fa56a8c846d0565e45f5ee082f98f2ccf1b261de4a7e902201b)

cb52b212a62f808c2f59600b2823491ee12bd91cab8e0260fe34b5f14c47552f
(TODO: verify)
apple2-asoft-auto.romApple II+ AppleSoft BASIC and Autostart System ROMs, concatenated(12KiB).

Consists of 2KiB ROMs(in order, with SHA-256 hashes):


341-0011
(b45168834f01e11ae2cc35fc6bef153e5a13c180503c6533dff111558099df4d)

341-0012
(468d36201974ecbe22efd9164f0ead1abab00b33f1a480da525502964641f444)

341-0013
(2814de134e79213eddb6d7d7a18cba105e120a08e77c9767c46d6fc3cfcc593d)

341-0014
(6848707531d7a8934a58e743483e4ebc74bf2ded0229b42533fa20cb89ed1a23)

341-0015
(220fb70bac6839c98901cd542c3c1fbd7145d0bb9423ea8fcc8af0f16ec47d75)

341-0020
(29465303e7844fa56a8c846d0565e45f5ee082f98f2ccf1b261de4a7e902201b)

fc3e9d41e9428534a883df5aa10eb55b73ea53d2fcbb3ee4f39bed1b07a82905
Apple IIe:
apple2e.romApple IIe BASIC and System ROMs, concatenated, 16KiB.1fb812584c6633fa16b77b20915986ed1178d1e6fc07a647f7ee8d4e6ab9d40b
apple2e-video.romApple IIe Video ROM, 4KiB, 342-0133-Aed5bdd4afa509134e85f1d020685af7ff50e279226eb869a17825b471cc1634c
apple2e-kb.romApple IIe Keyboard ROM, 2KiB, 342-0132-B68198ae95923926b0307893d03ec286f00822c93a0b6dabfca565f6718dd5a56
Enhanced Apple IIe:
apple2e-enh.romEnhanced Apple IIe BASIC and System ROMs, concatenated, 16KiB.aab38a03ca8deabbb2f868733148c2efd6f655a59cd9c5d058ef3e0b7aa86a1a
apple2e-enh-video.romEnhanced Apple IIe Video ROM, 4KiB, 342-0265-A52c3b87900ac939f6525402cab1ccfd8f8259290fc6df54da48fb4c98ae3ed0f
apple2e-enh-kb.romEnhanced Apple IIe Keyboard ROM, 2KiB, 341-0132-Da1989da84ea4381d309e7e08783771f884e913236b9bcc71c3d649aacf76537a
Disk II:
disk2-13boot.romDisk II Interface 13-Sector P5 Boot ROM, 341-00092d2599521fc5763d4e8c308c2ee7c5c4d5c93785b8fb9a4f7d0381dfd5eb60b6
(TODO: verify)
disk2-13seq.romDisk II Interface 13-Sector P6 Sequencer ROM, 341-00104234aed053c622b266014c4e06ab1ce9e0e085d94a28512aa4030462be0a3cb9
disk2-16boot.romDisk II Interface 16-Sector P5 Boot ROM, 341-0027de1e3e035878bab43d0af8fe38f5839c527e9548647036598ee6fe7ec74d2a7d
disk2-16seq.romDisk II Interface 16-Sector P6 Sequencer ROM, 341-0028e5e30615040567c1e7a2d21599681f8dac820edbdcda177b816a64d74b3a12f2

Input

Joystick/Gamepad

Game:Preferred Resistance Setting(1, 2, 3, or 4):
Boulder Dash3
Bouncing Kamungas2
Mario Bros2
Ms. Pac-Man2
Pac-Man2
Stargate1
Thexder2
Wavy Navy2
Xevious2
Zaxxon1

Atari Joystick

The following software is known to be compatible with one or more Atari joysticks(connected via an adapter to an Apple II):

Apple II/II+ Keyboard

Mednafen emulates the later II/II+ two-piece keyboard that uses the AY-5-3600 encoder.

Note that emulated keyboard key state is not updated unless input grabbing(by default, mapped to CTRL+SHIFT+Menu) is toggled on.

Default Mappings

Key(s):Virtual Apple II/II+ Key:
A

Keypad 8
A
Z

Keypad 2
Z
B through YB through Y
0 through 90 through 9
-:
=-
InsertRESET
Tab
ESC
ESC
[
ALT
REPT
\
Enter
Home
RETURN
Caps Lock
CTRL
CTRL
;
Keypad 4
;
Backspace

Keypad 5
Delete

Keypad 6
Page Down
SHIFTSHIFT
,,
..
/
End
/



Apple IIe Keyboard

Note that emulated keyboard key state is not updated unless input grabbing(by default, mapped to CTRL+SHIFT+Menu) is toggled on.

Default Mappings

Key(s):Virtual Apple IIe Key:
InsertRESET
ESCESC
TabTAB
CTRLCONTROL
SHIFTSHIFT
Caps LockCAPS LOCK
Left ALT
Left Windows
Open Apple ○
Right ALT
Right Windows
Closed Apple ●
SpaceSpace
EnterRETURN
BackspaceDELETE
A through ZA through Z
0 through 90 through 9
``
--
==
[[
]]
\\
;;
''
,,
..
//



Custom Palettes

Global Filename:Description:
apple2.palRGB mode 16-color(or 32-color for TFR) palette. The presence of a custom palette will automatically enable RGB video mode if an RGB mode is not already selected via the "apple2.video.mode" setting. If the palette has 32 color entries, the text fringe reduction variant of an RGB mode is enabled.

16 or 32 RGB triplets

Settings Reference

Caution: Any settings that change emulation behavior as seen from the emulated game are shown with the setting name bolded in the table. One should be conscious of these settings if one has changed them from the default values when using network play or movies, as they can cause desychronizations if not set the same among hosts(or between the recording emulator and the playing emulator).

Setting:Value Type:Possible Values:Default Value:Description:
apple2.input.kb.auto_repeatboolean0
1
1Enable Apple IIe's auto key repeat.

Only has an effect with Apple IIe/Enhanced IIe emulation.

 
apple2.input.kb.ghostingboolean0
1
1Enable key ghosting emulation.

When enabled, spurious emulated keypresses will be generated when certain combinations of keys are held down simultaneously.

 
apple2.input.kb.iie.capslock.defposenumoff
on
onDefault position for switch "CAPS LOCK".

Sets the position for the switch to the value specified upon startup and virtual input device change.

  • off - Off
    Lowercase

  • on - On
    Uppercase
 
apple2.input.port1enumnone
paddle
joystick
gamepad
atari
joystickInput device for Virtual Gameport 1
  • none - None(all game I/O devices disabled)
    Will disable all game I/O devices if selected.

  • paddle - Paddle
    1-axis, 1-button rotary dial paddle. Only usable on virtual port 2 if it's also selected on virtual port 1.

  • joystick - Joystick
    2-axis, 2-button joystick, with 4-state resistance switch.

  • gamepad - Gamepad
    Gamepad with D-pad and 2 buttons. Seen by emulated software as a 2-axis, 2-button analog joystick(albeit with only axis extremes), but provides more configuration options for the user.

  • atari - Atari Joystick
    Atari joyport digital joystick. Only usable on virtual port 2 if it's also selected on virtual port 1. Limited compatibility with software.

    Note: Incompatible with Apple IIe, due to conflicts with the Open Apple and Closed Apple keys. As a partial workaround, hold the first emulated joystick's D-pad in the left position upon power-on.
 
apple2.input.port1.joystick.axis_scalereal1.00 through 1.501.00Analog axis scale coefficient for Joystick on Virtual Gameport 1.
 
apple2.input.port2enumpaddle
atari
paddleInput device for Virtual Gameport 2
  • paddle - Paddle
    1-axis, 1-button rotary dial paddle. Only usable on virtual port 2 if it's also selected on virtual port 1.

  • atari - Atari Joystick
    Atari joyport digital joystick. Only usable on virtual port 2 if it's also selected on virtual port 1. Limited compatibility with software.

    Note: Incompatible with Apple IIe, due to conflicts with the Open Apple and Closed Apple keys. As a partial workaround, hold the first emulated joystick's D-pad in the left position upon power-on.
 
apple2.modelenumii
ii+
ii_ii+
iie
iie_enh
ii_ii+Nominal model of Apple II to emulate.

This setting is ignored when using a MAI file.

  • ii - Apple II
    Apple II, with 48KiB RAM, Integer BASIC, AppleSoft BASIC ROM card, and Autostart.

  • ii+ - Apple II+
    Apple II+, with 64KiB RAM, AppleSoft BASIC, and Autostart.

  • ii_ii+ - Apple II/II+
    Apple II/II+, with 64KiB RAM, AppleSoft BASIC, and Autostart; however, when loading a 13-sector disk image, 48KiB of RAM and an Integer BASIC ROM card are automatically selected.

  • iie - Apple IIe
    Apple IIe with 128KiB RAM and DHGR support.

  • iie_enh - Enhanced Apple IIe
    Enhanced Apple IIe with 128KiB RAM and DHGR support.
 
apple2.multiloadboolean0
1
1Enable automatic multiload from archives.

When loading a disk image from an archive(e.g. ZIP file) without a MAI file present, also automatically load all other files with the same extension in the same directory in that archive.

 
apple2.video.brightnessreal-1.0 through 1.00.0Video brightness.
 
apple2.video.color_lumafilterinteger-3 through 3-3Composite color video luma filter.

Filters numbered closer to 0 have a stronger lowpass effect. Negative-numbered filters have ringing.

 
apple2.video.color_smoothinteger0 through 20Composite color video smoothing level.

When a non-zero value, reduces vertical stripes in composite video without increasing blurriness, at the cost of some pixel irregularities. Larger values select more-aggressive smoothing. May make small text illegible in graphics mode.

 
apple2.video.contrastreal-1.0 through 1.00.0Video luma contrast.
 
apple2.video.correct_aspectboolean0
1
1Correct aspect ratio.
 
apple2.video.force_monointeger0x000000 through 0xFFFFFF0x000000Force monochrome graphics color.

Force monochrome graphics if non-zero, with the specified color.

 
apple2.video.huereal-1.0 through 1.00.0Color video hue/tint.
 
apple2.video.matrixenumcustom
mednafen
la7620
cxa2025as_usa
cxa2060bs_usa
cxa2095s_usa
cxa2025as_japan
cxa2060bs_japan
cxa2095s_japan
mednafenColor decoder matrix.

The matrixes that correspond to the nominal demodulation angles and gains for various ICs are intended to get colors within the ballpark of what consumer-oriented NTSC TVs would display, and won't exactly replicate the colors these ICs would reproduce when fed an Apple II video signal.

  • custom - Custom

  • mednafen - Mednafen

  • la7620 - Sanyo LA7620-like.

  • cxa2025as_usa - Sony CXA2025AS-like, USA setting

  • cxa2060bs_usa - Sony CXA2060BS-like, USA setting.

  • cxa2095s_usa - Sony CXA2095S-like, USA setting.

  • cxa2025as_japan - Sony CXA2025AS-like, Japan setting.

  • cxa2060bs_japan - Sony CXA2060BS-like, Japan setting.

  • cxa2095s_japan - Sony CXA2095S-like, Japan setting.
 
apple2.video.matrix.blue.ireal-4.00 through 4.00-1.11Custom color decoder matrix; blue, I.

Only used if "apple2.video.matrix" is set to "custom".

 
apple2.video.matrix.blue.qreal-4.00 through 4.001.70Custom color decoder matrix; blue, Q.

Only used if "apple2.video.matrix" is set to "custom".

 
apple2.video.matrix.green.ireal-4.00 through 4.00-0.28Custom color decoder matrix; green, I.

Only used if "apple2.video.matrix" is set to "custom".

 
apple2.video.matrix.green.qreal-4.00 through 4.00-0.64Custom color decoder matrix; green, Q.

Only used if "apple2.video.matrix" is set to "custom".

 
apple2.video.matrix.red.ireal-4.00 through 4.000.96Custom color decoder matrix; red, I.

Only used if "apple2.video.matrix" is set to "custom".

 
apple2.video.matrix.red.qreal-4.00 through 4.000.62Custom color decoder matrix; red, Q.

Only used if "apple2.video.matrix" is set to "custom".

 
apple2.video.mixed_text_monoboolean0
1
0Enable hack to treat mixed-mode text as monochrome.
 
apple2.video.modeenumcomposite
rgb
rgb_tfr
rgb_alt
rgb_alt_tfr
rgb_qd
rgb_qd_tfr
rgb_video7
compositeVideo rendering mode.

When an RGB mode is enabled, settings "apple2.video.postsharp", "apple2.video.force_mono", "apple2.video.mixed_text_mono", "apple2.video.mono_lumafilter", "apple2.video.color_lumafilter", and "apple2.video.color_smooth" are effectively ignored.

When selecting an RGB mode, setting "apple2.shader" to "autoipsharper" is recommended.

  • composite - Composite
    Internal video dimensions of 584x192.

  • rgb - RGB
    Internal video dimensions of 292x192 for single-resolution modes, and 584x192 for double-resolution; suitable for use with scalers like hq2x.

  • rgb_tfr - RGB, with (D)HGR text fringe reduction.
    Internal video dimensions of 292x192 for single-resolution modes, and 584x192 for double-resolution; suitable for use with scalers like hq2x. Reduced brightness of colored pixels horizontally sandwiched between white pixels in (D)HGR mode.

  • rgb_alt - RGB (alternate algorithm)
    Internal video dimensions of 584x192.

  • rgb_alt_tfr - RGB (alternate algorithm), with (D)HGR text fringe reduction.
    Internal video dimensions of 584x192. Reduced brightness of colored pixels horizontally sandwiched between white pixels in (D)HGR mode.

  • rgb_qd - RGB, with 1/4 resolution DHGR.
    Internal video dimensions of 292x192 for single-resolution modes, 584x192 for 80-column text, and 146x192 for DHGR; suitable for use with scalers like hq2x. Enables palette generation tweak to provides two distinct grays.

  • rgb_qd_tfr - RGB, with HGR text fringe reduction and 1/4 resolution DHGR.
    Internal video dimensions of 292x192 for single-resolution modes, 584x192 for 80-column text, and 146x192 for DHGR; suitable for use with scalers like hq2x. Reduced brightness of colored pixels horizontally sandwiched between white pixels in HGR mode. Enables palette generation tweak to provides two distinct grays.

  • rgb_video7 - RGB, IIe Video 7-like algorithm.
    Internal video dimensions of 584x192. Enables palette generation tweak to provides two distinct grays.

    Useful with Sierra AGI games, like "King's Quest" and "Space Quest".
 
apple2.video.mono_lumafilterinteger-3 through 75Composite monochrome video luma filter.

Filters numbered closer to 0 have a stronger lowpass effect. Negative-numbered filters have ringing.

 
apple2.video.postsharpreal-1.0 through 2.00.0Composite color video sharpness.

Positive values will increase perceptual sharpness(and ringing), negative values will blur the image. When a non-zero value is specified, CPU usage will increase due to the continuous extra calculations required.

Note that this filter is applied after composite->RGB conversion(after the effects of the hue, saturation, brightness, contrast, color luma filter, and color smoothing settings), and in a roughly linear luminance space.

 
apple2.video.saturationreal-1.0 through 1.00.0Color video saturation.
 

Setting:Value Type:Possible Values:Default Value:Description:
apple2.enableboolean0
1
1Enable (automatic) usage of this module.
 
apple2.scanlinesinteger-100 through 1000Enable scanlines with specified opacity.

Opacity is specified in %; IE a value of "100" will give entirely black scanlines.

Negative values are the same as positive values for non-interlaced video, but for interlaced video will cause the scanlines to be overlaid over the previous(if the "video.deinterlacer" setting is set to "weave", the default) field's lines.

 
apple2.shaderenumnone
autoip
autoipsharper
scale2x
sabr
ipsharper
ipxnoty
ipynotx
ipxnotysharper
ipynotxsharper
goat
noneEnable specified OpenGL shader.

Obviously, this will only work with the OpenGL "video.driver" setting, and only on cards and OpenGL implementations that support shaders, otherwise you will get a black screen, or Mednafen may display an error message when starting up. When a shader is enabled, the "apple2.videoip" setting is ignored.

  • none - None/Disabled

  • autoip - Auto Interpolation
    Will automatically interpolate on each axis if the corresponding effective scaling factor is not an integer.

  • autoipsharper - Sharper Auto Interpolation
    Same as "autoip", but when interpolation is done, it is done in a manner that will reduce blurriness if possible.

  • scale2x - Scale2x

  • sabr - SABR v3.0
    GPU-intensive.

  • ipsharper - Sharper bilinear interpolation.

  • ipxnoty - Linear interpolation on X axis only.

  • ipynotx - Linear interpolation on Y axis only.

  • ipxnotysharper - Sharper version of "ipxnoty".

  • ipynotxsharper - Sharper version of "ipynotx".

  • goat - Simple approximation of a color TV CRT look.
    Intended for fullscreen modes with a vertical resolution of around 1000 to 1500 pixels. Doesn't simulate halation and electron beam energy distribution nuances.
 
apple2.shader.goat.fprogboolean0
1
0Force interlaced video to be treated as progressive.

When disabled, the default, the "video.deinterlacer" setting is effectively ignored with respect to what appears on the screen, unless it's set to "blend" or "blend_rg". When enabled, it may be prudent to disable the scanlines effect controlled by the "apple2.shader.goat.slen" setting, or else the scanline effect may look objectionable.

 
apple2.shader.goat.hdivreal-2.00 through 2.000.50Constant RGB horizontal divergence.
 
apple2.shader.goat.patenumgoatron
borg
slenderman
goatronMask pattern.
  • goatron - Goatron
    Brightest.

  • borg - Borg
    Darkest.

  • slenderman - Slenderman
    Spookiest?
 
apple2.shader.goat.slenboolean0
1
1Enable scanlines effect.
 
apple2.shader.goat.tpreal0.00 through 1.000.50Transparency of otherwise-opaque mask areas.
 
apple2.shader.goat.vdivreal-2.00 through 2.000.50Constant RGB vertical divergence.
 
apple2.specialenumnone
hq2x
hq3x
hq4x
scale2x
scale3x
scale4x
2xsai
super2xsai
supereagle
nn2x
nn3x
nn4x
nny2x
nny3x
nny4x
noneEnable specified special video scaler.

The destination rectangle is NOT altered by this setting, so if you have xscale and yscale set to "2", and try to use a 3x scaling filter like hq3x, the image is not going to look that great. The nearest-neighbor scalers are intended for use with bilinear interpolation enabled, for a sharper image, though the "autoipsharper" shader may provide better results.

  • none - None/Disabled

  • hq2x - hq2x

  • hq3x - hq3x

  • hq4x - hq4x

  • scale2x - scale2x

  • scale3x - scale3x

  • scale4x - scale4x

  • 2xsai - 2xSaI

  • super2xsai - Super 2xSaI

  • supereagle - Super Eagle

  • nn2x - Nearest-neighbor 2x

  • nn3x - Nearest-neighbor 3x

  • nn4x - Nearest-neighbor 4x

  • nny2x - Nearest-neighbor 2x, y axis only

  • nny3x - Nearest-neighbor 3x, y axis only

  • nny4x - Nearest-neighbor 4x, y axis only
 
apple2.stretchenum0
full
aspect
aspect_int
aspect_mult2
aspect_mult2Stretch to fill screen.
  • 0 - Disabled

  • full - Full
    Full-screen stretch, disregarding aspect ratio.

  • aspect - Aspect Preserve
    Full-screen stretch as far as the aspect ratio(in this sense, the equivalent xscalefs == yscalefs) can be maintained.

  • aspect_int - Aspect Preserve + Integer Scale
    Full-screen stretch, same as "aspect" except that the equivalent xscalefs and yscalefs are rounded down to the nearest integer.

  • aspect_mult2 - Aspect Preserve + Integer Multiple-of-2 Scale
    Full-screen stretch, same as "aspect_int", but rounds down to the nearest multiple of 2.
 
apple2.tblurboolean0
1
0Enable video temporal blur(50/50 previous/current frame by default).
 
apple2.tblur.accumboolean0
1
0Accumulate color data rather than discarding it.
 
apple2.tblur.accum.amountreal0 through 10050Blur amount in accumulation mode, specified in percentage of accumulation buffer to mix with the current frame.
 
apple2.videoipenum0
1
x
y
xEnable (bi)linear interpolation.
  • 0 - Disabled

  • 1 - Bilinear

  • x - Linear (X)
    Interpolation only on the X axis.

  • y - Linear (Y)
    Interpolation only on the Y axis.
 
apple2.xresinteger0 through 655360Full-screen horizontal resolution.

A value of "0" will cause the current desktop horizontal resolution to be used.

 
apple2.xscalereal0.01 through 2564.000000Scaling factor for the X axis in windowed mode.
 
apple2.xscalefsreal0.01 through 2561.000000Scaling factor for the X axis in fullscreen mode.

For this setting to have any effect, the "apple2.stretch" setting must be set to "0".

 
apple2.yresinteger0 through 655360Full-screen vertical resolution.

A value of "0" will cause the current desktop vertical resolution to be used.

 
apple2.yscalereal0.01 through 2564.000000Scaling factor for the Y axis in windowed mode.
 
apple2.yscalefsreal0.01 through 2561.000000Scaling factor for the Y axis in fullscreen mode.

For this setting to have any effect, the "apple2.stretch" setting must be set to "0".