Giter Club home page Giter Club logo

anise-cheezball-rising's Introduction

Star Anise Chronicles: Cheezball Rising

Hello! This is a brand new adventure game for the Game Boy Color. It's about my cat Anise, having adventures.

Anise, having adventures

I'm also writing about the entire development process in gratuitous detail on my blog, if you'd like to follow along!

Playing

The canonical source for builds is Patreon, where you can get access a whole week early for only $4 a month! I may also upload builds here, um, when I remember.

A Game Boy Color emulator is helpful! My favorite is mGBA (I'm using recent builds of 0.7) โ€” try loading the gba-colors shader for a more pastel aesthetic. Allegedly, BGB is also good for Windows and SameBoy is good for Mac.

Of course, you could always play the game on actual hardware, too.

Building

You will need:

  • rgbds, the recenter the better
  • Python 3 with Pillow installed
  • make

Do the following:

make

Wow! You did it. ๐ŸŽ† Enjoy!

(Actually, you probably didn't โ€” currently I have some intermediate build assets that require manual intervention to actually get working. Sorry! I'll fix it soon. Or maybe I already did, but forgot I put this paragraph in the README.)

Development

I'll gladly accept advice on idioms and errors and whatnot, but would prefer no non-trivial pull requests โ€” I'd like to be able to account, personally, for every last byte in the finished game.

That said, feel free to use this as a base for something of your own! The following may be helpful:

anise-cheezball-rising's People

Contributors

eevee 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

eievui5

anise-cheezball-rising's Issues

[IDEA] Notes on PCM playback using the wavetable channel.

(note: this is meant as a response to https://eev.ee/blog/2018/09/06/cheezball-rising-resounding-failure/, but since comments there are disabled but i might have not seen the comments... also don't have a disqus account and this would be too long to be a proper comment anyways so an issue it is)


so, after reading your post (blame nicole.express for linking to it), i have a few notes to say

first, about why the pulse wave isn't centered, it's because a proper 1/8 pulse has a dc offset that the high-pass filter blocks, this comes from the fact that every 8 samples, 1 is in one direction and the other 7 are in the opposite direction, not canceling out.

now about the wavetable sample problem


the problem appears to be that, when the wavetable channel is not playing, the mixer outputs its default value of 8, instead of the wavetable average of 0.

to visualize this better, imagine an output of 8 to be "0", an output of 0 to be "8", and so on. this should give identical results to the original hardware when not using global volume, just at an inverted phase.

then the default value is indeed 0, and the wavetable can go from 0 to 16, usually averaging around 8.

thus, when not playing the wavetable, play a very high frequency square wave instead, creating a dc offset of 8. do that quickly enough and the pop could be too minor to notice.


this also presents an opportunity if the wavetable has sufficient low-frequency content such that each 32-sample window has a different dc offset.

if that's the case, the offset can be changed to anywhere from 8 to 12 (possible with 3/4 pulse) when not playing a sample, and lowered from 0 to 4 when playing a sample (or higher if you know the sample levels will go back down by the end of the window, potentially allowing the signal to be mixed louder and thus, reduce clipping.

additionally, if you know you are using mono audio (such as the internal speaker), you can also adjust the "coarseness" of the wavetable steps by panning them. unfortunately the volume slider won't work for this since it only shifts the existing values instead of shrinking them properly.


potential bonus idea: changing the channel frequency to do slight data compression and align the samples better so the previous idea works better.

BUTTON_* constants are unnecessary

Currently you define eight BUTTON_* constants, but hardware.inc already has these (PADB_* for bitwise instructions, PADF_* for masks). To switch to using them you'd need to change the swap a in read_input (here) to swap b, since you have the nybbles in the opposite order to its expectations.

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.