Giter Site home page Giter Site logo

gomeboycolor's People

Contributors

djhworld 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gomeboycolor's Issues

Store saves/ramsaves and emulator settings in database

Instead of faffing about storing ram saves as files, store them in a database such as SQLITE

Things to consider: -

  • How efficient is SQLITE at storing and retrieving BLOBS?
  • Size of database will grow in line with the amount of games you play

Also could think about allowing ROMS to be stored in a database too?

Background tile priority

Each background tile in CGB mode has additional attributes, one of these is to set the priority of the tile.

This is different from the normal GB as no BG tile priority is specified.

Study and implement Background Tile Priority

image

Some games appear to crash

Seen in

  • Dr Mario
  • Super Mario Land

The game will spontaneously just crash/freeze up at a random moment. I've seen this happen a few times in Super Mario Land in world 1-3.

I have a feeling it's either: -

  • To do with interrupts (LCD interrupt perhaps?)
  • STAT register issues

Difficult to reproduce

Colour

Support gameboy color features - after all this is supposed to be a gameboy color emulator!

Sprites in metroid have strange behaviour/animation

When you roll into a ball in metroid the game is supposed to display a solid ball that you move around.

However the animation for this in the emulator is wrong, it keeps flickering/changing and is different when you move left/right

This is the same when you jump really high too

image

image

I think this is probably down to the sprite horizontal/vertical flipping logic.

How can I distribute the emulator with gl/glfw bindings?

The go-gl/glfw and go-gl/gl go libraries bind to the C libraries which need to be installed on your machine to work.

This is a pain for distribution, so it's worth investigating the following

  • Can I package up the binary + shared libs together and then all run from the same directory?

e.g.

  • gomeboycolor
  • libglfw.so

etc

Allow command line settings to be stored in file

At the moment you have to start the emulator with a bunch of command line flags

I often use the same ones every time (e.g. -noboot and -size 2)

Would be nice to be able to store these into a file that is parsed at startup, with any flags provided on the command line acting as overrides.

Could also use this file to store stuff like the keyboard layout settings as well

This could possibly be combined into #19. with the settings stored in a database rather than a file. Although that would mean I would have to write something to allow you to maintain the database too....

"Clock" is running fast in games

In games such as: -

  • Super Mario Land
  • Super Mario Land 2

There is an in-game "clock" that counts down whilst you're playing a level, the quicker you finish the level - the more points you get.

This seems to be ticking fast, maybe 2-3 ticks within 1 second.

I'd imagine this is linked to the timer code, but I'm not sure.

Some sprites not rendering correctly in Warioland

Some sprites are not appearing correctly, I think this is because of the sprite flipping logic is STILL not fixed. (This is similar to issues #25, #23 and #16)

This is supposed to be a cloud
image

and this one
image

When you attack this enemy it flips upside down, but the sprite goes weird
image

CPU Double Speed Mode

The CGB has a feature to double the speed of the CPU, investigate and implement this feature.

"Bubble" in Bubble Bobble not rendering correctly

As part of #16 a fix was put in place to flip sprites vertically and horizontally at the same time.

This fixed an issue in Super Mario Land 2, but the problem still remains in Bubble Bobble, it appears as if the pieces of the bubble are there, but they're not being rendered in the right places

image

Refactor GPU

The gpu code is horrendous and difficult to read. It couples CGB and DMG code into the same file and all feels a bit messy and cobbled together

It should be refactored into something cleaner.

Could take some cues from this talk https://www.youtube.com/watch?v=HyzD8pNlpwI of the direction to head in

Sprites not rendering correctly in R-Type DX

Some sprites are not appearing correctly, I think this is because of the sprite flipping logic is STILL not fixed. (This is similar to issues #25, #23, #16 and #31)

These enemies are supposed to appear to spin on their axis, but the sprite doesn't animate properly

image

keyboard interrupts might get dropped under heavy load

Under heavy load (like when running using webassembly in Chrome), the processing of keyboard interrupts might swallow key events. The implementation relies on the scheduler to ensure that the cpu go-routine runs in between key-up and key-down events. This might not be the case as there is no guaranteed scheduling order.

While this is an anomaly of a specific scheduling, it would be nice to guard against this by delaying state changes of keys until after the next time the cpu had a chance to process them.

Rakefile Dependency

The Rakefile requires the sys-uname gem to build gomeboycolor on Unix systems. It would be useful to add this dependency to the How do I build it? section of the FAQ.

Keep up the great work. This project is an interesting example of the power of go.

CGB DMA Transfer

The CGB has additional registers for DMA transfers to OAM RAM.

Ensure these are implemented correctly.

Certain sprites not rendering correctly

This is most noticeable in games like Bubble Bobble -> the bubble that surrounds the character in the opening sequence is not a circle!

image

I've also seen something similar in Super Mario Land 2

image

I'm thinking this is probably due to the sprite horizontal/vertical flipping stuff

Windowing

Currently no windowing is supported by the graphics drawing code.

Sound

Implement support for sound (looks tricky ๐Ÿ‘Ž )

Sprites in Skate or Die don't appear

You're supposed to see a skater appear but nothing appears.

This could possibly be because the sprites are drawn in full during the vertical blanking period rather than on a scanline-by-scanline basis.

image

MBC1 RAM saving

Allow users to save games where supported (I think this is when the game has as BATTERY option?)

Fix graphics issues in some ROMS

I've seen some weirdness in the loading screens of some ROMS

See these videos for examples

https://imgur.com/a/7umJguZ

Mainly

  • Pokemon Gold, the bird pokemon (sorry...) on the title screen renders as a sillouhette which probably isn't right

image

  • Tony Hawks Pro Skater - The title screen is all garbled

image

  • Aladdin - all the loading screens are garbled

image

image

Scrolling glitches when moving across tilemap

There are some issues with the drawing code that I think are connected to scrolling, like for example when you scroll across the map in Super Mario Land 2 it glitches when Scroll Y wraps round to from 0 down to 255

MBC3

Partially implemented but I don't think it works as it should - focus on getting this working

MBC3 RTC support

I've implemented what I believe to be the correct implementation for MBC3 (see #7) but I've left out support for the Real Time Clock (RTC)

This needs to be implemented.

Investigate goroutines for performance improvement

I've been messing around trying to eek out some extra performance from the emulator.

It appears as if moving the emulator code into a goroutine and then sending the screen data over a channel results in HUGE performance increases (like 20-30 frames in some cases)

Need to investigate whether this is a viable change and whether this change works across operating systems

GUI launcher

At the moment the whole emulator is launched using command line settings.

Might be worth considering creating some sort of GUI that

  • Changes emulator settings (e.g. saves dir, screen size etc)
  • Displays ROMS (which you can boot into)
  • Allows you to administer save files (could perhaps be linked with #19 and have the saves stored in a DB?)

Add ability to pause and serialise state of emulator to disk

Just like a virtual machines, it would be nice to have the ability to serialise the state of the emulator to disk and reload it into the emulator (even one on a different machine!) and resume playing from where you left off

Would have to take into consideration stuff like

  • Graphics -> how can we serialize the state of the graphics driver? In particular the state of the OpenGL window
  • Sound -> When implemented

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.