Incandescent

A place where you can keep others updated about your NES-related projects through screenshots, videos or information in general.

Moderator: Moderators

Post Reply
User avatar
NeverCameBack
Posts: 56
Joined: Mon Feb 24, 2020 12:22 am

Incandescent

Post by NeverCameBack »

I have a really early stage project attached that demonstrates some of the topics taught in the Nerdy Nights tutorials.
Those tutorials got me started, but a lot of what I understand is thanks to Tokumaru, Quietust, and anyone else who took the time to answer my questions. I've been busy at work over the last two months, coming home mentally exhausted, but now am trying to pick this project back up.

Some accomplishments:
- Used sprite 0 hit for a 2 name-table title screen.
- Stars (sprites) on title screen sparkle, because of a clock, which is a counter based on NMI hits.
- Music plays on the screens.
- When A is pressed a second "game screen" is loaded.
- CHR Bank switching; A new .chr file is loaded.
- A woman walks with some animation based on the clock.

It uses the entrances and exits to the sound engine - I don't understand the engine entirely. It is using the NN sample songs. My next goal is to write my own song. Also to make a text box appear when you press A over a certain area of the screen. Then get into multiple screens, NPCs, choices. I have a synopsis written for the game too. It's about personal stories of a few characters and some super natural topics like vampires, I think it'll be more like a story based game with some puzzle elements. Any tips or coding or suggestions would be appreciated. I'll update this as I hit more milestones.
Attachments
Incandesant_Gaze_v0_20.nes
(64.02 KiB) Downloaded 318 times
Incandesant_Gaze_v0_20.zip
(68.52 KiB) Downloaded 240 times
rox_midge
Posts: 91
Joined: Mon Sep 19, 2005 11:51 am

Re: Incandescent

Post by rox_midge »

I know it's early, but you're doing great! The title screen looks awesome, and the mid-screen bank switch is fabulous. You might be able to get away with fewer distinct tiles on the title screen by removing duplicates (e.g., using NESST or whatnot).

Not much to say otherwise - you've got a tree growing in the middle of the street, and the lady can walk on the moon, which feels like it should be kept in the final game as an Easter egg. But it's definitely an accomplishment!

FYI, your reset routine has something wrong with it - if you reset (not full power cycle) after starting the game, the title screen is garbled, and if you enter the game again, it sometimes works and sometimes crashes.
User avatar
dink
Posts: 157
Joined: Sun Jan 12, 2020 8:42 pm

Re: Incandescent

Post by dink »

nice start so far! :)

2 things i noticed:
little glitches around the titlescreen split (timing)
& I can make her walk on the moon!
User avatar
NeverCameBack
Posts: 56
Joined: Mon Feb 24, 2020 12:22 am

Re: Incandescent

Post by NeverCameBack »

Hey thanks a lot for checking it out.

- I have to figure out how to get rid of those blue dashes flickering on the title screen. When I move sprite zero even 1 pixel in either direction, it screws up the "full screen" image.

- I'll still have to set all the limits so the character can't go into the sky. There is only one right now stopping her from going up in the buildings.

Right now I'm trying to come up with a way to condense BG data, because I'm realizing that I can really only fit 7 full backgrounds from $E000 to $FFFF. My sound engine is at $A000 to $C000, and my game code is at $C0000 to $E00. It looks like I have $8000 to $A000 empty, so maybe I can fit another 8 backgrounds there. I'm wondering how games seem to fit A LOT more than that though.
User avatar
norill
Posts: 26
Joined: Wed Dec 07, 2016 12:05 am
Location: PAL

Re: Incandescent

Post by norill »

NeverCameBack wrote: Sat Aug 01, 2020 2:14 pm- I have to figure out how to get rid of those blue dashes flickering on the title screen. When I move sprite zero even 1 pixel in either direction, it screws up the "full screen" image.
your sprite zero hit polling loop is way too slow. try this:

Code: Select all

        @wait_sprite0_hit_clr:
            bit PPU_STATUS
        bvs @wait_sprite0_hit_clr
        @wait_sprite0_hit_set:
            bit PPU_STATUS
        bvc @wait_sprite0_hit_set
the top part of your screen uses F0 as a blank tile, but the bottom part uses 00. when you switch pattern tables mid screen, the F0 tile is no longer blank. you should use 00 as the blank tile in both pattern tables. also when you want to test if something is zero you dont have to cmp #0. most operations update the Z flag, even lda.
NeverCameBack wrote: Sat Aug 01, 2020 2:14 pmRight now I'm trying to come up with a way to condense BG data, because I'm realizing that I can really only fit 7 full backgrounds from $E000 to $FFFF. My sound engine is at $A000 to $C000, and my game code is at $C0000 to $E00. It looks like I have $8000 to $A000 empty, so maybe I can fit another 8 backgrounds there. I'm wondering how games seem to fit A LOT more than that though.
remove duplicate tiles, compress the rest. i'm using donut compression, it reduces tile data by about 40%
User avatar
nesrocks
Posts: 563
Joined: Thu Aug 13, 2015 4:40 pm
Location: Rio de Janeiro - Brazil
Contact:

Re: Incandescent

Post by nesrocks »

I'm not sure why splitting the title screen is necessary. I tested here and NES Screen Tool seems to have generated a full nam of it in one CHR just fine?

Image
https://twitter.com/bitinkstudios <- Follow me on twitter! Thanks!
https://www.patreon.com/bitinkstudios <- Support me on Patreon!
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Incandescent

Post by tokumaru »

NeverCameBack wrote: Sat Aug 01, 2020 2:14 pmI'm wondering how games seem to fit A LOT more than that though.
Most games don't store raw name/attribute table data in the ROM. For static screens they'll often use some generic compression technique, such as RLE or LZSS. As for level maps, games usually take advantage of the fact that certain structures appear many times in different places, so they store these structures separately and reference those in the map, instead of raw tiles, making it possible to "invoke" larger blocks/structures using only 1 or 2 bytes.

In SMB for example, each screen starts out "blank" and the level map specifies where to draw everything (holes on the ground, pipes, bricks, etc.) in a very compact format. Mega Man on the other hand defines a set of 32x32-pixel blocks (commonly called metatiles) that it uses to build the levels, bringing the total size of a screen down to 64 bytes. There's of course the overhead of the metatiles themselves, but the overall savings are still huge.
User avatar
NeverCameBack
Posts: 56
Joined: Mon Feb 24, 2020 12:22 am

Re: Incandescent

Post by NeverCameBack »

I fell off the NES wagon. Went on vacation at the end of August, trying to calculate the wall locations in my game on piece of paper while on the plane. Then I just fell out completely. I'm gonna attempt to make more progress now. It's been tough trying to make it through the nerdy nights music tutorial - which is where I left off, several times.

I could have made that title screen in one nametable, but was just going through the exercise of using sprite 0 hit to get a full screen image.

Once again thanks for the deep knowledge. I figured the BGs had to be generated "on the go", since I can only fit some "x" number of full screens - and I'm running out of space with the CHR bank swapping. I plan on getting some of my own music playing, then moving to the MMC1 bank swapping. Will report progress.
Scrobins09
Posts: 9
Joined: Sun Mar 03, 2019 4:48 pm

Re: Incandescent

Post by Scrobins09 »

Any new progress? I love checking back on this game, hoping to see it come to completion.
Post Reply