Progress Thread - Jammin Honey
Moderator: Moderators
Re: Progress Thread - Jammin Honey
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
- toggle switch
- Posts: 139
- Joined: Fri Sep 30, 2016 8:57 pm
Re: Progress Thread - Jammin Honey
a low-pass filter set to cut frequencies above the nyquist rate would probably be a pretty important aspect of pre-processing, no?
Re: Progress Thread - Jammin Honey
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.
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
- rainwarrior
- Posts: 8732
- Joined: Sun Jan 22, 2012 12:03 pm
- Location: Canada
- Contact:
Re: Progress Thread - Jammin Honey
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.)
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.)
Re: Progress Thread - Jammin Honey
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.
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.
Re: Progress Thread - Jammin Honey
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.
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
Re: Progress Thread - Jammin Honey
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 (2.67 KiB) Viewed 12656 times
nesdoug.com -- blog/tutorial on programming for the NES
Re: Progress Thread - Jammin Honey
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.
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
Re: Progress Thread - Jammin Honey
This seems to be the year of "stuff your data in unused CHR-ROM space", or so it seems Been doing the same
Re: Progress Thread - Jammin Honey
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
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
Re: Progress Thread - Jammin Honey
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.
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
Re: Progress Thread - Jammin Honey
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.
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
Re: Progress Thread - Jammin Honey
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.
Re: Progress Thread - Jammin Honey
I'm not sure that an attract mode that plays that poorly would be worth even bothering to put in there.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.
My games: http://www.bitethechili.com