Giter Club home page Giter Club logo

chip8's Introduction

Important

I like to use the "Mark as spam" button on my mail client, in order to globally reduce the trust of the sender domain.

Researchers and marketing teams that scrap GitHub: you have been warned - you send me spam, I harm your business.

Hi, I am Dani.

  • I am a freelance software engineer. Interested in backends, but fullstack by accident.
  • Did you know that you can hire me for your next project or idea? Check out danirod.dev for more information.
  • I have a blog / website at danirod.es where I want about things of my interest.
  • I also work as a content creator for my online projects: makigas and its side YouTube channel.
  • You can find me on LinkedIn, Stack Overflow and Mastodon.

Here are some of my personal programming facts.

  • My favourite languages are C, Go and Ruby. I also enjoy Java and PHP. I am interested in Elixir.
  • I really hate JavaScript, but it pays the bills, so I do my best to get the job done (and, if possible, with TypeScript).
  • Svelte > Vue > jQuery > React. However, I prefer Nuxt for fullstack JavaScript apps.
  • Atomic CSS is a mistake that mankind will eventually pay for. However, in this house we respect UnoCSS.

Here are some of the repositories in this profile I think you will probably like.

chip8's People

Contributors

danirod avatar davidbuchanan314 avatar guerra24 avatar hugomartin89 avatar mandevone 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

Watchers

 avatar  avatar  avatar  avatar  avatar

chip8's Issues

malloc error: pointer being freed was not allocated

This is a marker issue that has been created for post-referencing. It's already a Known Issue and it's getting fixed.

It's found that when the emulator shuts down on Linux and MacOS X, it crashes dumping to the terminal the following error message:

chip8(2920,0x7fff7a09b310) malloc: *** error for object 0x7f9c9d81d200: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

This behaviour cannot be reproduced on Windows platform. On MacOS X host it even freezes sometimes for a few seconds keyboard and mouse.

Puede ser que las instrucciones 8xy6 y 8xyE esten incorrectas.

Segun esta pagina [http://mattmik.com/chip8.html] lo correcto seria:

8XY6 - Store the value of register VY shifted right one bit in register VX
Set register VF to the least significant bit prior to the shift.

8XYE - Store the value of register VY shifted left one bit in register VX
Set register VF to the most significant bit prior to the shift.

Emulated clock cycles could be changed by the user

Since CHIP-8 is just a specification and it's up to the actual machines to set the clock speed, it would be nice if the user could set the clock speed for the game. This could change the frame speed as well since on recent releases the emulator seems to be faster in terms of emulation speed.

CPU consume is too high

CHIP-8 eats way too much CPU on the host machine.

Run the emulator on any operating system and check the CPU usage. It will go up to 90%-100% and stay until emulator gets closed. This is a problem on less powerful computers and it can drain batteries on laptops.

No return check after init_context

This is a reminder issue so that I don't forget about this next time I work on this emulator.

init_context(struct context_t*) is called on main function but no actual check for the return value of that function is being made. Source code. This means that if the context cannot be initialized properly and an error happens, the program won't notice until it tries to do something 'illegal' and crashes. This should be fixed, actually.

This is what happens when you try to release overnight: you fail. Go to sleep, release next morning. I've learnt this lesson the hard way.

No feedback on Windows when running chip8.exe

No stdout, no stderr, no error message printed if just .\chip8.exe is executed.

No stdout/stderr is because of -mwindows, which is a flag required to treat the application as a graphical (Win32) application instead of a console application. The deal is that unless the application is graphic, Windows will suck stdout/stderr and not print it to cmd.exe (MSYS shell works fine here).

No errors mean no feedback. If the user just double clicks chip8.exe icon he won't notice what is going on because there is no way for telling the user what he is supposed to do (drag a ROM icon to the application?, provide an argument via terminal?).

Display flashes a lot

This is a marker issue. It's already a known issue and it's being fixed but is here for referencing purposes.

During game execution display flashes a lot on each frame. It seems that only pixels that have changed value flash. That may explain why on PONG everything just blinks out like crazy but on INVADERS start screen, only letters inside the board blink.

screen shot 2015-03-10 at 14 39 36

Split project into library and main client

This is a marker issue.

I'm going to split this project into two separate parts:

  • Library: is going to be named libchipocho. Core of the emulation will be here.
  • Main client: is the SDL client that uses libchipocho to run an actual emulator.

Some other things to do during this refactor are:

  • Split project into headers and source files.
  • Add some unit tests.
  • Proper documentation system.

Yes, these changes are inspired by what I'm doing right now at my other emulator project.

Pull requests may be blocked while this task is going on since I'm moving a lot of files. I don't know how much time will this task take.

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.