Chip 8
I designed the VIP2K Chip 8 Interpreter based on the VIP Chip 8 Interpreter. Any chip 8 software should run on the VIP2K but due to the larger screen resolution and faster CPU some speed differences will be noticeable. There are also some differences in the Chip 8 instruction set but besides missing sound support should not be noticeable. Chip 8X, Chip 10, Chip ETI600, Chip 8 Hires and Chip 8 using 1802 subroutines are not supported.
The VIP2K Chip 8 is available in the VIP2K monitor since revision 1.4. Source code for the VIP2K Chip 8 is available here.
Before starting Chip 8 with the ‘C’ command make sure to load Chip 8 SW in Intel hex format with the ‘I’’ command.
Key Functions
During runtime the following key functions are supported:
- Control Q: Quit chip 8
- Control 1 to 9: Speed where 1 is slowest, 9 is fastest
- Control K: Reset keyboard map to default
- Control R: Reset Chip 8 interpreter
- Control S: Reset Chip 8 interpreter and start-up in small screen mode, i.e. 2x4 pixel size.
- Control L: Reset Chip 8 interpreter and start-up in large screen mode, i.e. 3x5 pixel size.
The smaller screen size is recommended for software that uses more and larger graphic or screen updates.
Default Key Mapping
- 0-9, A-F: Chip 8 keys 0-F
- I: Chip 8 key 2
- J: Chip 8 key 4
- K: Chip 8 key 6
- M: Chip 8 key 8
- Space: Chip 8 key 5
The definition of I, J, K, M and space allow easier game movement for most games I: up, J: left, K: right, M: down, space: fire.
Dedicated key definition can be included in the Chip 8 hex file by including the complete keyboard mapping table stored in RAM at 0xFF00-0xFFAF.
Chip 8
I designed the VIP2K Chip 8 Interpreter based on the VIP Chip 8 Interpreter. Any chip 8 software should run on the VIP2K but due to the larger screen resolution and faster CPU some speed differences will be noticeable. There are also some differences in the Chip 8 instruction set but besides missing sound support should not be noticeable. Chip 8X, Chip 10, Chip ETI600, Chip 8 Hires and Chip 8 using 1802 subroutines are not supported.
The VIP2K Chip 8 is available in the VIP2K monitor since revision 1.4. Source code for the VIP2K Chip 8 is available here.
Before starting Chip 8 with the ‘C’ command make sure to load Chip 8 SW in Intel hex format with the ‘I’’ command.
Key Functions
During runtime the following key functions are supported:
- Control Q: Quit chip 8
- Control 1 to 9: Speed where 1 is slowest, 9 is fastest
- Control K: Reset keyboard map to default
- Control R: Reset Chip 8 interpreter
- Control S: Reset Chip 8 interpreter and start-up in small screen mode, i.e. 2x4 pixel size.
- Control L: Reset Chip 8 interpreter and start-up in large screen mode, i.e. 3x5 pixel size.
The smaller screen size is recommended for software that uses more and larger graphic or screen updates.
Default Key Mapping
- 0-9, A-F: Chip 8 keys 0-F
- I: Chip 8 key 2
- J: Chip 8 key 4
- K: Chip 8 key 6
- M: Chip 8 key 8
- Space: Chip 8 key 5
The definition of I, J, K, M and space allow easier game movement for most games I: up, J: left, K: right, M: down, space: fire.
Dedicated key definition can be included in the Chip 8 hex file by including the complete keyboard mapping table stored in RAM at 0xFF00-0xFFAF.
Chip 8
I designed the VIP2K Chip 8 Interpreter based on the VIP Chip 8 Interpreter. Any chip 8 software should run on the VIP2K but due to the larger screen resolution and faster CPU some speed differences will be noticeable. There are also some differences in the Chip 8 instruction set but besides missing sound support should not be noticeable. Chip 8X, Chip 10, Chip ETI600, Chip 8 Hires and Chip 8 using 1802 subroutines are not supported.
The VIP2K Chip 8 is available in the VIP2K monitor since revision 1.4. Source code for the VIP2K Chip 8 is available here.
Before starting Chip 8 with the ‘C’ command make sure to load Chip 8 SW in Intel hex format with the ‘I’’ command.
Key Functions
During runtime the following key functions are supported:
- Control Q: Quit chip 8
- Control 1 to 9: Speed where 1 is slowest, 9 is fastest
- Control K: Reset keyboard map to default
- Control R: Reset Chip 8 interpreter
- Control S: Reset Chip 8 interpreter and start-up in small screen mode, i.e. 2x4 pixel size.
- Control L: Reset Chip 8 interpreter and start-up in large screen mode, i.e. 3x5 pixel size.
The smaller screen size is recommended for software that uses more and larger graphic or screen updates.
Default Key Mapping
- 0-9, A-F: Chip 8 keys 0-F
- I: Chip 8 key 2
- J: Chip 8 key 4
- K: Chip 8 key 6
- M: Chip 8 key 8
- Space: Chip 8 key 5
The definition of I, J, K, M and space allow easier game movement for most games I: up, J: left, K: right, M: down, space: fire.
Dedicated key definition can be included in the Chip 8 hex file by including the complete keyboard mapping table stored in RAM at 0xFF00-0xFFAF.
Chip 8
I designed the VIP2K Chip 8 Interpreter based on the VIP Chip 8 Interpreter. Any chip 8 software should run on the VIP2K but due to the larger screen resolution and faster CPU some speed differences will be noticeable. There are also some differences in the Chip 8 instruction set but besides missing sound support should not be noticeable. Chip 8X, Chip 10, Chip ETI600, Chip 8 Hires and Chip 8 using 1802 subroutines are not supported.
The VIP2K Chip 8 is available in the VIP2K monitor since revision 1.4. Source code for the VIP2K Chip 8 is available here.
Before starting Chip 8 with the ‘C’ command make sure to load Chip 8 SW in Intel hex format with the ‘I’’ command.
Key Functions
During runtime the following key functions are supported:
- Control Q: Quit chip 8
- Control 1 to 9: Speed where 1 is slowest, 9 is fastest
- Control K: Reset keyboard map to default
- Control R: Reset Chip 8 interpreter
- Control S: Reset Chip 8 interpreter and start-up in small screen mode, i.e. 2x4 pixel size.
- Control L: Reset Chip 8 interpreter and start-up in large screen mode, i.e. 3x5 pixel size.
The smaller screen size is recommended for software that uses more and larger graphic or screen updates.
Default Key Mapping
- 0-9, A-F: Chip 8 keys 0-F
- I: Chip 8 key 2
- J: Chip 8 key 4
- K: Chip 8 key 6
- M: Chip 8 key 8
- Space: Chip 8 key 5
The definition of I, J, K, M and space allow easier game movement for most games I: up, J: left, K: right, M: down, space: fire.
Dedicated key definition can be included in the Chip 8 hex file by including the complete keyboard mapping table stored in RAM at 0xFF00-0xFFAF.
Chip 8
I designed the VIP2K Chip 8 Interpreter based on the VIP Chip 8 Interpreter. Any chip 8 software should run on the VIP2K but due to the larger screen resolution and faster CPU some speed differences will be noticeable. There are also some differences in the Chip 8 instruction set but besides missing sound support should not be noticeable. Chip 8X, Chip 10, Chip ETI600, Chip 8 Hires and Chip 8 using 1802 subroutines are not supported.
The VIP2K Chip 8 is available in the VIP2K monitor since revision 1.4. Source code for the VIP2K Chip 8 is available here.
Before starting Chip 8 with the ‘C’ command make sure to load Chip 8 SW in Intel hex format with the ‘I’’ command.
Key Functions
During runtime the following key functions are supported:
- Control Q: Quit chip 8
- Control 1 to 9: Speed where 1 is slowest, 9 is fastest
- Control K: Reset keyboard map to default
- Control R: Reset Chip 8 interpreter
- Control S: Reset Chip 8 interpreter and start-up in small screen mode, i.e. 2x4 pixel size.
- Control L: Reset Chip 8 interpreter and start-up in large screen mode, i.e. 3x5 pixel size.
The smaller screen size is recommended for software that uses more and larger graphic or screen updates.
Default Key Mapping
- 0-9, A-F: Chip 8 keys 0-F
- I: Chip 8 key 2
- J: Chip 8 key 4
- K: Chip 8 key 6
- M: Chip 8 key 8
- Space: Chip 8 key 5
The definition of I, J, K, M and space allow easier game movement for most games I: up, J: left, K: right, M: down, space: fire.
Dedicated key definition can be included in the Chip 8 hex file by including the complete keyboard mapping table stored in RAM at 0xFF00-0xFFAF.
Location of game keys is at I: 0xFF11, J: 0xFF1A, K: 0xFF12, M:0xFF1B, space: 0xFF1B. In the same way default speed value (0xFFA8) and default screen size (0xFFA9) can be included.
Memory Map
Location | Description |
---|---|
8000-81FF | Normally not used but in theory could be used for Chip 8 code |
8200-8FFF | Chip user space |
E800-EC77 | Video RAM |
E800-E84D | Top 3 lines, not used by chip 8 |
E84E-EB8D | Chip 8 video screen for 3x5 pixel format |
EB8E-EBF5 | Bottom 4 lines normally used by chip 8, some games like Pong use some of these lines |
EBF6-EC77 | Bottom and top lines should always be 0 |
E800-E8CF | Top 8 lines, not used by chip 8 |
E8D0-EC0F | Chip 8 video screen for 2x4 pixel format |
EC10-ECF9 | Bottom 9 lines normally used by chip 8, some games like Pong use some of these lines |
ECFA-ED95 | Bottom and top lines should always be 0 |
FF00-FF9F | Key Mapping table |
FFA0-FFA4 | CHIP8 identifier text |
FFA8 | Speed, 0-0x30 in steps of 6 |
FFA9 | Screen resolution, 0: large with 3x5 pixel size, NOT 0: small with 2x4 pixel size |
FFB2-FFCF | Jump table for Chip 8 instructions |
FFE0-FFEF | Chip 8 V0-VF variables |
FFF0-FFF3 | Graphic scratch area |
FFF9 | Keyboard code |
FFFA | Chip 8 counter, counting down to 0 from value as set by Chip 8 instruction |
Differences in Chip 8 instruction set
Original Chip 8 | VIP 2K Chip 8 | |
---|---|---|
User space | 0x200 – 0xEFF | 0x8000 – 0x8FFF, starting address is at 0x8200 |
00aa, SYS 0aa | Call 1802 system routine at 70aa | |
0aaa, SYS aaa | Call 1802 system routine at aaa | Call 1802 system routine at 8aaa (aaa > 0FF) |
1aaa, JP aaa | Jump to address aaa | Jump to address 8aaa |
2aaa, CALL aaa | Call subroutine at aaa | Call subroutine at 8aaa |
Aaaa, LD I, aaa | I = aaa | I = 8aaa |
Baaa, JP V0, aaa | Jump to address aaa + V0 | Jump to address 8aaa + V0 |
Fx18, LD ST, Vx | Soundtimer = Vx | NOP |
Memory Map
Location | Description |
---|---|
8000-81FF | Normally not used but in theory could be used for Chip 8 code |
8200-8FFF | Chip user space |
E800-EC77 | Video RAM |
E800-E84D | Top 3 lines, not used by chip 8 |
E84E-EB8D | Chip 8 video screen for 3x5 pixel format |
EB8E-EBF5 | Bottom 4 lines normally used by chip 8, some games like Pong use some of these lines |
EBF6-EC77 | Bottom and top lines should always be 0 |
E800-E8CF | Top 8 lines, not used by chip 8 |
E8D0-EC0F | Chip 8 video screen for 2x4 pixel format |
EC10-ECF9 | Bottom 9 lines normally used by chip 8, some games like Pong use some of these lines |
ECFA-ED95 | Bottom and top lines should always be 0 |
FF00-FF9F | Key Mapping table |
FFA0-FFA4 | CHIP8 identifier text |
FFA8 | Speed, 0-0x30 in steps of 6 |
FFA9 | Screen resolution, 0: large with 3x5 pixel size, NOT 0: small with 2x4 pixel size |
FFB2-FFCF | Jump table for Chip 8 instructions |
FFE0-FFEF | Chip 8 V0-VF variables |
FFF0-FFF3 | Graphic scratch area |
FFF9 | Keyboard code |
FFFA | Chip 8 counter, counting down to 0 from value as set by Chip 8 instruction |
Differences in Chip 8 instruction set
Original Chip 8 | VIP 2K Chip 8 | |
---|---|---|
User space | 0x200 – 0xEFF | 0x8000 – 0x8FFF, starting address is at 0x8200 |
00aa, SYS 0aa | Call 1802 system routine at 70aa | |
0aaa, SYS aaa | Call 1802 system routine at aaa | Call 1802 system routine at 8aaa (aaa > 0FF) |
1aaa, JP aaa | Jump to address aaa | Jump to address 8aaa |
2aaa, CALL aaa | Call subroutine at aaa | Call subroutine at 8aaa |
Aaaa, LD I, aaa | I = aaa | I = 8aaa |
Baaa, JP V0, aaa | Jump to address aaa + V0 | Jump to address 8aaa + V0 |
Fx18, LD ST, Vx | Soundtimer = Vx | NOP |
Memory Map
Location | Description |
---|---|
8000-81FF | Normally not used but in theory could be used for Chip 8 code |
8200-8FFF | Chip user space |
E800-EC77 | Video RAM |
E800-E84D | Top 3 lines, not used by chip 8 |
E84E-EB8D | Chip 8 video screen for 3x5 pixel format |
EB8E-EBF5 | Bottom 4 lines normally used by chip 8, some games like Pong use some of these lines |
EBF6-EC77 | Bottom and top lines should always be 0 |
E800-E8CF | Top 8 lines, not used by chip 8 |
E8D0-EC0F | Chip 8 video screen for 2x4 pixel format |
EC10-ECF9 | Bottom 9 lines normally used by chip 8, some games like Pong use some of these lines |
ECFA-ED95 | Bottom and top lines should always be 0 |
FF00-FF9F | Key Mapping table |
FFA0-FFA4 | CHIP8 identifier text |
FFA8 | Speed, 0-0x30 in steps of 6 |
FFA9 | Screen resolution, 0: large with 3x5 pixel size, NOT 0: small with 2x4 pixel size |
FFB2-FFCF | Jump table for Chip 8 instructions |
FFE0-FFEF | Chip 8 V0-VF variables |
FFF0-FFF3 | Graphic scratch area |
FFF9 | Keyboard code |
FFFA | Chip 8 counter, counting down to 0 from value as set by Chip 8 instruction |
Differences in Chip 8 instruction set
Original Chip 8 | VIP 2K Chip 8 | |
---|---|---|
User space | 0x200 – 0xEFF | 0x8000 – 0x8FFF, starting address is at 0x8200 |
00aa, SYS 0aa | Call 1802 system routine at 70aa | |
0aaa, SYS aaa | Call 1802 system routine at aaa | Call 1802 system routine at 8aaa (aaa > 0FF) |
1aaa, JP aaa | Jump to address aaa | Jump to address 8aaa |
2aaa, CALL aaa | Call subroutine at aaa | Call subroutine at 8aaa |
Aaaa, LD I, aaa | I = aaa | I = 8aaa |
Baaa, JP V0, aaa | Jump to address aaa + V0 | Jump to address 8aaa + V0 |
Fx18, LD ST, Vx | Soundtimer = Vx | NOP |
Memory Map
Location | Description |
---|---|
8000-81FF | Normally not used but in theory could be used for Chip 8 code |
8200-8FFF | Chip user space |
E800-EC77 | Video RAM |
E800-E84D | Top 3 lines, not used by chip 8 |
E84E-EB8D | Chip 8 video screen for 3x5 pixel format |
EB8E-EBF5 | Bottom 4 lines normally used by chip 8, some games like Pong use some of these lines |
EBF6-EC77 | Bottom and top lines should always be 0 |
E800-E8CF | Top 8 lines, not used by chip 8 |
E8D0-EC0F | Chip 8 video screen for 2x4 pixel format |
EC10-ECF9 | Bottom 9 lines normally used by chip 8, some games like Pong use some of these lines |
ECFA-ED95 | Bottom and top lines should always be 0 |
FF00-FF9F | Key Mapping table |
FFA0-FFA4 | CHIP8 identifier text |
FFA8 | Speed, 0-0x30 in steps of 6 |
FFA9 | Screen resolution, 0: large with 3x5 pixel size, NOT 0: small with 2x4 pixel size |
FFB2-FFCF | Jump table for Chip 8 instructions |
FFE0-FFEF | Chip 8 V0-VF variables |
FFF0-FFF3 | Graphic scratch area |
FFF9 | Keyboard code |
FFFA | Chip 8 counter, counting down to 0 from value as set by Chip 8 instruction |
Differences in Chip 8 instruction set
Original Chip 8 | VIP 2K Chip 8 | |
---|---|---|
User space | 0x200 – 0xEFF | 0x8000 – 0x8FFF, starting address is at 0x8200 |
00aa, SYS 0aa | Call 1802 system routine at 70aa | |
0aaa, SYS aaa | Call 1802 system routine at aaa | Call 1802 system routine at 8aaa (aaa > 0FF) |
1aaa, JP aaa | Jump to address aaa | Jump to address 8aaa |
2aaa, CALL aaa | Call subroutine at aaa | Call subroutine at 8aaa |
Aaaa, LD I, aaa | I = aaa | I = 8aaa |
Baaa, JP V0, aaa | Jump to address aaa + V0 | Jump to address 8aaa + V0 |
Fx18, LD ST, Vx | Soundtimer = Vx | NOP |
Memory Map
Location | Description |
---|---|
8000-81FF | Normally not used but in theory could be used for Chip 8 code |
8200-8FFF | Chip user space |
E800-EC77 | Video RAM |
E800-E84D | Top 3 lines, not used by chip 8 |
E84E-EB8D | Chip 8 video screen for 3x5 pixel format |
EB8E-EBF5 | Bottom 4 lines normally used by chip 8, some games like Pong use some of these lines |
EBF6-EC77 | Bottom and top lines should always be 0 |
E800-E8CF | Top 8 lines, not used by chip 8 |
E8D0-EC0F | Chip 8 video screen for 2x4 pixel format |
EC10-ECF9 | Bottom 9 lines normally used by chip 8, some games like Pong use some of these lines |
ECFA-ED95 | Bottom and top lines should always be 0 |
FF00-FF9F | Key Mapping table |
FFA0-FFA4 | CHIP8 identifier text |
FFA8 | Speed, 0-0x30 in steps of 6 |
FFA9 | Screen resolution, 0: large with 3x5 pixel size, NOT 0: small with 2x4 pixel size |
FFB2-FFCF | Jump table for Chip 8 instructions |
FFE0-FFEF | Chip 8 V0-VF variables |
FFF0-FFF3 | Graphic scratch area |
FFF9 | Keyboard code |
FFFA | Chip 8 counter, counting down to 0 from value as set by Chip 8 instruction |
Differences in Chip 8 instruction set
Original Chip 8 | VIP 2K Chip 8 | |
---|---|---|
User space | 0x200 – 0xEFF | 0x8000 – 0x8FFF, starting address is at 0x8200 |
00aa, SYS 0aa | Call 1802 system routine at 70aa | |
0aaa, SYS aaa | Call 1802 system routine at aaa | Call 1802 system routine at 8aaa (aaa > 0FF) |
1aaa, JP aaa | Jump to address aaa | Jump to address 8aaa |
2aaa, CALL aaa | Call subroutine at aaa | Call subroutine at 8aaa |
Aaaa, LD I, aaa | I = aaa | I = 8aaa |
Baaa, JP V0, aaa | Jump to address aaa + V0 | Jump to address 8aaa + V0 |
Fx18, LD ST, Vx | Soundtimer = Vx | NOP |