You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+31-21Lines changed: 31 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,17 +2,19 @@
2
2
3
3
[CHIP-8](https://en.wikipedia.org/wiki/CHIP-8) is a fantasy video game console definition from the 1970s by Joseph Weisbecker.
4
4
5
-
This version runs on Apple II models that support Double Low Resolution graphics (DGR):
5
+
This is an interpreter for running CHIP-8 programs on Apple II models that support Double Low Resolution graphics (DGR):
6
6
7
-
* Apple IIe (original)
8
-
* Apple IIe Enhanced
7
+
* Apple IIe* (original), with 80 column card
8
+
* Apple IIe Enhanced*, with 80 column card
9
9
* Apple IIc
10
10
* Apple IIc Plus
11
11
* Apple IIgs
12
12
* Macintosh IIe Option Card (_untested_)
13
13
* Clones such as the Laser 128, Franklin ACE 2200, Franklin ACE 500
14
14
* Emulators such as MAME, Virtual ][, AppleWin, etc.
15
15
16
+
_* The rare Apple IIe Revision A motherboard does not support double-resolution graphics._
17
+
16
18
It runs in ProDOS-8 and follows the "interpreter protocol" so that launchers such as [Bitsy Bye](https://prodos8.com/bitsy-bye/) and [Apple II DeskTop](https://a2desktop.com) can automatically launch CHIP-8 programs with it.
To run a CHIP-8 program, copy the file to a [ProDOS-8 2.4](https://prodos8.com/) with the `CHIP8.SYSTEM` renamed to (or copied as) `BASIS.SYSTEM` in the root directory, then boot the disk. [Bitsy Bye](https://prodos8.com/bitsy-bye/) will run and show a list of files and directories. Pick the CHIP-8 file and it will launch automatically.
30
+
To run a CHIP-8 program, copy the file to a [ProDOS-8 2.4](https://prodos8.com/)disk with the `CHIP8.SYSTEM` renamed to (or duplicated as) `BASIS.SYSTEM` in the root directory, then boot the disk. [Bitsy Bye](https://prodos8.com/bitsy-bye/) will run and show a list of files and directories. Pick the CHIP-8 file and it will launch automatically.
29
31
30
-
> TIP: [Apple II DeskTop](https://a2desktop.com) will use a copy of `BASIS.SYSTEM` in the same directory to launch unknown file types.
32
+
> TIP: [Apple II DeskTop](https://a2desktop.com) will also use a copy of `BASIS.SYSTEM` in the same directory to launch unknown file types.
31
33
32
34
There are many online archives of CHIP-8 programs:
33
35
@@ -36,13 +38,15 @@ There are many online archives of CHIP-8 programs:
> TIP: CHIP-8 programs use a variety of key combinations. Look for documentation where you found the program, or mash the keys to figure out the controls. Have fun!
66
+
For example, the `BLINKY` game (a Pac-Man clone) uses keypad keys <kbd>7</kbd> and <kbd>8</kbd> for left and right, and <kbd>3</kbd> and <kbd>6</kbd> for up and down, so on the Apple II keyboard you would use <kbd>A</kbd> and <kbd>S</kbd> for left and right, and <kbd>3</kbd> and <kbd>E</kbd> for up and down.
67
+
68
+
> TIP: CHIP-8 programs use a variety of key combinations, often very strange ones. Look for documentation where you found the program, or mash the keys to figure out the controls. Good luck!
63
69
64
70
65
71
Other controls:
@@ -70,26 +76,30 @@ Other controls:
70
76
71
77
## Compatibility & Quirks
72
78
73
-
Some CHIP-8 programs require different compatibility settings. This can be enabled by changing the ProDOS file type of the program to `$5D` (`ENT` or Entertainment), and setting the aux type to `$C800` (for "CHIP-8") with the lower byte used as "quirks" flags as follows:
79
+
Some CHIP-8 programs require different compatibility settings, called "quirks".
| Memory |`memoryLeaveIUnchanged`*| on / false| <kbd>@</kbd> | 1 |
85
+
| Display Wait |`vblank`| on / true| <kbd>#</kbd> | 2|
86
+
| Clipping |`wrap`*| on / false| <kbd>$</kbd> | 3 |
87
+
| Shifting |`shift`| off / false| <kbd>%</kbd> | 4 |
88
+
| Jumping |`jump`| off / false| <kbd>^</kbd> | 5 |
83
89
84
-
Names are per [Timendus's CHIP-8 quirks test](https://github.com/Timendus/chip8-test-suite?tab=readme-ov-file#quirks-test). The defaults match the passing expectations in these tests.
90
+
**Quirk names**are per [Timendus's CHIP-8 quirks test](https://github.com/Timendus/chip8-test-suite?tab=readme-ov-file#quirks-test). The defaults for `CHIP8.SYSTEM` match the passing expectations in these tests.
85
91
86
-
IDs are per the [CHIP-8 database](https://github.com/chip-8/chip-8-database/blob/master/database/quirks.json), which lists the same quirks but with slightly different expectations. A * signifies that sense is inverted, i.e. _setting_ the bit is the same as turning _off_the quirk, per the database definition.
92
+
**IDs** are per the [CHIP-8 database](https://github.com/chip-8/chip-8-database/blob/master/database/quirks.json), which lists the same quirks but with slightly different expectations. A * signifies that sense is inverted, i.e. turning the quirk *on*, per the test definition, is the same as the *false* setting in the database definition.
87
93
88
94
Defaults "on" and "off" reference Timendus' tests, "true" and "false" reference the CHIP-8 database.
89
95
90
-
Otherwise, all quirks are set to the defaults. This is equivalent to file type `$5D` and aux type `$C80F`.
96
+
To toggle a quirk on or off at runtime, press the **Key**. The CHIP-8 program will restart with the new setting.
97
+
98
+
It is possible to persistently configure the quirks for a CHIP-8 program. This is done by changing the ProDOS file type of the program to `$5D` (a.k.a. `ENT` or Entertainment), and setting the aux type to `$C800` (for "CHIP-8") with the lower byte used as "quirks" flags, per the **Bit** column.
99
+
100
+
For example, the `BLINKY` game (a Pac-Man clone) requires the "Memory" quirk disabled (bit 1) and the "Shifting" quirk enabled (bit 4), so is packaged with file type `$5D` and aux type `$C81D`, since `$1D` is binary `00011101` meaning bit 0 is on, bit 1 is off, bit 2 is on, bit 3 is on, bit 4 is on, and bit 5 is off.
91
101
92
-
For exmple, the `BLINKY` game (a Pac-Man clone) requires the "Memory" quirk disabled and the "Shifting" quirk enabled, so is packaged with file type `$5D` and aux type `$C81D`.
102
+
If the file type is not `$5D` or the aux type does not start with `$C8` then programs start with all quirks set to the defaults. This is equivalent to file type `$5D` and aux type `$C80F`, since `$0F` is binary `00001111` meaning bits 0-3 are on and bits 4-5 are off.
93
103
94
104
For detailed "quirks" definitions, see https://github.com/Timendus/chip8-test-suite?tab=readme-ov-file#the-test
0 commit comments