Giter Club home page Giter Club logo

chip-8's People

Contributors

mattmikolay avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chip-8's Issues

HI-RES CHIP-8 resolution

The extension reference says that both CHIP-10 and HI-RES CHIP-8 have a resolution of 128 x 64. This is subtly incorrect.

CHIP-10 is indeed 128 x 64 (through some trickery and extra hardware requirements), but HI-RES CHIP-8 is in fact 64 x 128, which it achieves by reducing each pixel's vertical height from four scanlines to one.

part of the CHIP-8 document is wrong

8XYE should work as 8XXE, the Y part is ignored.
FX55 & FX65 should not change I.

you can find an emulator online http://chip8.byethost24.com, and select TICTAC game rom.
if 8XYE and FX55, FX65 are implemented as in your document, this game will not work.

[https://github.com/trapexit/chip-8_documentation
](this document) is much more precise.

Typo in section "All about data registers"

In the mentioned section below the sentence:

"The bits of a data register can also be shifted to the left or to the right using the following instructions:"

The instruction 8XY1 does not match it's description in the table.

According to the page "Chip-8 Instruction Set", the instruction 8XYE, as opposed to 8XY1, allows to "Store the value of register VY shifted left one bit in register VX". The instruction 8XY1 is said to "Set VX to VX OR VY"

Sources
https://github.com/mattmikolay/chip-8/wiki/Mastering-CHIP%E2%80%908#all-about-data-registers
https://github.com/mattmikolay/chip-8/wiki/CHIP%E2%80%908-Instruction-Set

Clarify ambiguity re: sound timer in wiki

The technical reference on the wiki currently reads:

The sound timer provides CHIP-8's only facility for sound output. When the sound timer's value is non-zero, a tone will be emitted from the system's speaker.

I think changing that "when" to "while" would be a little less ambiguous, and clarify that the beep lasts until the timer reaches 0x01. It's a minor thing for sure, but I still think it would be helpful.

Do 8XY6 and 8XYE change VY as well?

Can you clarify whether the 8XY6 and 8XYE instructions change the VY register as well? The table below in your "Mastering CHIP-8" (and the Wiki) appears to mean that they change only the VX register: VX = VY >> 1 and VX = VY << 1.

8XY6: Store the value of register VY shifted right one bit in register VX ...
8XYE: Store the value of register VY shifted left one bit in register VX ...

On the other hand, the paragraph below the table gives an impression that register VY has to be modified as well: VX = VY = VY >> 1 and VX = VY = VY << 1.

It is a common misconception when programming in CHIP-8 to assume that the VX register is shifted by this instruction, and VY remains unmodified.

I found that Octo, a popular CHIP-8 assembler, uses the first interpretation while there are some documentation that supports the second one: Chip-8 on the COSMAC VIP and the previous version of the CHIP-8 page on Wikipedia.

Anyway, thank you for your great documentation!

Memory address typo in CHIP-8 Technical Reference

Hi @mattmikolay,

Thanks for the awesome CHIP-8 resources. I'm writing my first emulator now using your wiki and its links as a reference and I think I have come across a typo. On a system with 4096 bytes of memory, if the final 352 bytes are reserved (and the first 0x200), then addresses 0x200 to 0xE9F should be free for a CHIP-8 program. However the CHIP-8 Technical Reference says otherwise. This is the change that I think is needed:

- On VIPs with 4096 bytes of RAM (and modern implementations), this leaves addresses 0x200 to 0xE8F free. 
+ On VIPs with 4096 bytes of RAM (and modern implementations), this leaves addresses 0x200 to 0xE9F free. 

There are at least four chip 8 fonts

Cosmac VIP, ETI-660, Dream 6800, and Chip48 interpreters all have different font data. This can effect program behavior because of pixel based collision. Some programs have text that looks off center as well.

Tested in Cosmac VIP and ETI-660 in Emma 02, Dream 6800 in MESS/MAME, and Chip48 in Emu48 for hp48sx.

Used cosmac VIP chip8 ram sha1 8AA634C239004FF041C9ADBF9144BD315AB5FC77

Used eti rom sha1 C0C4951E02F873F15560BDC3F35CDF3F99653922

Used Dream 6800 with original CHIPOS ROM. sha1 60F26E57A058262B30BEFCECEAB4363A5D65D877

Used chip48 2.25
https://groups.google.com/forum/#!searchin/comp.sys.handhelds/2.25/comp.sys.handhelds/z8KoBcbCExQ/q4VsdUu-1ssJ
which is sha1 16AB1BAC7D4861C26EFA4DF29E3AA3CE1BD8F7E5 after removing transfer dependent 13 byte hp header.

Images showing the fonts, and text with their binary representations are attached.

I suspect there are variants of the chip8 data used by the cosmac and telmac 1800. The author of chip48 had a telmac, but the font used by chip48 does not look exactly like the font seen in the chip8 ram used by Emma 02. (same chip8 ram data is used for cosmac and telmac)
https://groups.google.com/d/msg/comp.sys.hp48/eKdWisxs-_Q/63e9bVZcOkgJ
I intend to do more research into this.

chip48charTest
chip48font.txt
cosmacvipChartest
cosmacvipfont.txt
dream6800CharTest
dream6800font.txt
eti660chartest
eti660font.txt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.