Progress Thread - Jammin Honey

Moderator: Moderators

Post Reply
User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Re: Progress Thread - Jammin Honey

Post by dougeff »

I was getting good results just EQ boosting the mid-range. I might try some EQ variations first, before spending time on DMC converters.
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
toggle switch
Posts: 139
Joined: Fri Sep 30, 2016 8:57 pm

Re: Progress Thread - Jammin Honey

Post by toggle switch »

a low-pass filter set to cut frequencies above the nyquist rate would probably be a pretty important aspect of pre-processing, no?
User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Re: Progress Thread - Jammin Honey

Post by dougeff »

I strongly disagree, toggle switch.

The mid to upper range tends to come out weak in the conversion. So it needs a boost, not a cut.

Also, I'm going for realism. It should sound like a real guitar.
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Progress Thread - Jammin Honey

Post by rainwarrior »

Any good resampler will filter out stuff above the nyquist frequency while resampling, so they shouldn't affect the DMC encoding process anyway, unless you're using a bad resampler?

EQ is super important for DMC encoding though, since all the frequencies compete for that limited 1-bit bandwidth. It's just not possible to encode sounds with arbitrary spectrums, there's an imposed hierarchy with lower frequencies pushing out higher ones. (I wish RJDMC had an interactive EQ.)
lidnariq
Posts: 11430
Joined: Sun Apr 13, 2008 11:12 am

Re: Progress Thread - Jammin Honey

Post by lidnariq »

Frequencies above the nyquist rate would produce aliasing; that's not really relevant to the DPCM conversion (which is usually reduced to just the minimal problem of "convert one 8+bit sample in to one 1-bit sample out").

A lot of the problem is that the naïve DPCM conversion accidentally prefers to encode low frequencies and slew rate distortion in preference to higher frequencies; this can be worked around by bandlimiting the input. It doesn't necessarily have to be high- or low- passed, just narrowband.

DPCM is roughly equivalent to a 1-bit DAC that goes through an integrator; this integrator in turn acts as a lowpass with infinitely low corner frequency. (In the NES, DPCM only has a 6-bit range so that's not entirely accurate). I once made a conversion tool that attempted to take this into account (returning the sign of the first backwards difference instead of the naïve "trace the PCM waveform" algorithm), but it had problems with railing.
User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Re: Progress Thread - Jammin Honey

Post by dougeff »

Does anyone want to play test the game for me?

I need a detailed evaluation of each level and the graphics and the physics, etc.

I don't want to post a ROM, since several things are still not done (the main character's animations, for example).

PM me if you're interested. Thanks.
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Re: Progress Thread - Jammin Honey

Post by dougeff »

Random screenshot. I have 30 levels designed and re-designed. This part has taken much longer than I expected. Thanks to everyone who play tested. Hopefully I'll have an updated test in 2-4 weeks.
Attachments
Jammin10.png
Jammin10.png (2.67 KiB) Viewed 12618 times
nesdoug.com -- blog/tutorial on programming for the NES
na_th_an
Posts: 558
Joined: Mon May 27, 2013 9:40 am

Re: Progress Thread - Jammin Honey

Post by na_th_an »

I think it looks ace. Good job.
User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Re: Progress Thread - Jammin Honey

Post by dougeff »

I put MORE data in the CHR-ROM today.

Originally, I only put level data in the last CHR bank, but I'm getting a little nervous about PRG-ROM space left...I had about 1700 ($6C0) bytes left, but I am going to add another song 500+ bytes and all the logic for enemy moves, and a few other details, sprite definitions... I wasn't sure if it would fit.

Anyway, I put all my RLE files (non-level backgrounds, exported from NES Screen Tool) in the end of the 3rd CHR-ROM bank. Freed up about 1000 bytes. Now I can relax and program all the enemy moves.

Man, I didn't think I would run out of PRG-ROM so fast.

I'd say the game is 80% done.
nesdoug.com -- blog/tutorial on programming for the NES
na_th_an
Posts: 558
Joined: Mon May 27, 2013 9:40 am

Re: Progress Thread - Jammin Honey

Post by na_th_an »

This seems to be the year of "stuff your data in unused CHR-ROM space", or so it seems :D Been doing the same :)
User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Re: Progress Thread - Jammin Honey

Post by dougeff »

Here's a preview. I have the hero animations done, and most of the enemy animations done. Here's some tests of the enemy moves.

This is coming together very smoothly, due to some forethought. I wrote a bunch of generalized functions called "collision_down" and "ladder_below" for the hero to use. The enemies are using the same functions to decide if they are on a platform, or over a ladder.

I will probably do a few palette changes in later stages, to indicate that the enemy is a slightly harder version (faster, more aggressive).

https://youtu.be/oWmW-M-O_1Y
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Re: Progress Thread - Jammin Honey

Post by dougeff »

As predicted, I ran out of PRG space. I have everything but the boss fight programmed in. Tried to make some changes...OVERFLOW in PRG segment.

I'm now trying to identify redundant code, and putting that in subroutines, considering rewriting bits in ASM.

I won't be able to do a few things I wanted, if I'm out of space.

Almost there.


EDIT - I managed to free up another 1000 bytes by removing inefficiencies/redundancies in the sprite drawing code. Let's see how far this will get me.
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
dougeff
Posts: 3078
Joined: Fri May 08, 2015 7:17 pm

Re: Progress Thread - Jammin Honey

Post by dougeff »

1000 bytes wasn't enough. I had to gut all debugging code, and drop 1 of my DMC files. Now reusing my 1 remaining dmc at 2 different rates.

The final boss is almost done. Added some floaty numbers. Have about 100 bytes left.

I'm going to rewrite some code in ASM, so I can free up enough to fit 1 more song, and a few sound effects.

Probably won't have room for "attract mode". Oh well.
nesdoug.com -- blog/tutorial on programming for the NES
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Progress Thread - Jammin Honey

Post by calima »

Simple and low size attract mode: pick random direction every 1s, hold. Pick whether to jump and/or attack every 2s. Just feed these to your input.
User avatar
gauauu
Posts: 779
Joined: Sat Jan 09, 2016 9:21 pm
Location: Central Illinois, USA
Contact:

Re: Progress Thread - Jammin Honey

Post by gauauu »

calima wrote:Simple and low size attract mode: pick random direction every 1s, hold. Pick whether to jump and/or attack every 2s. Just feed these to your input.
I'm not sure that an attract mode that plays that poorly would be worth even bothering to put in there.
Post Reply