Is this normal to happen with programmers?

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

Post Reply
8bitMicroGuy
Posts: 314
Joined: Sun Mar 08, 2015 12:23 pm
Location: Croatia

Is this normal to happen with programmers?

Post by 8bitMicroGuy »

I've been having many ideas about what to do with the NES and I've just been writing tiny little snippets of code about how to do things like procedurally rendering SMB3 underground level dirt tiles into CHR-RAM by using optimal code, having a recording mechanism to record the player input for replay functions, making a game entity management system, but I've never got to get it to work because every time I make a project like that, then I realize that I haven't even set up the main NES stuff like clearing the memory, setting the stack, setting the PPU, etc.. It just feels like a chore. I'm not sure am I just lazy or is it really a pain to some of you to have to start NES projects/experimentations from scratch every time you want to do something. Speaking of which, I've been getting crazy ideas like having a mapper that has framebuffers as patterntables which dynamically switch as the mapper detects scanlines, and things like how the IRQ code would be dynamically compiled by the mapper into its own RAM and it would say things like pallette changes during HBlank which many people have been wanting to do. So many ideas that I just get deconcentrated and can't focus on anything and not even make anything other than a simple program to play music and sound effects by using my 4-state controller input code and GradualGames's GGSound.

Could someone please get me inspired to do something simple? Just a simple NES game that isn't just a tech demo or something crap?
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Is this normal to happen with programmers?

Post by tepples »

8bitMicroGuy wrote:I've been having many ideas about what to do with the NES and I've just been writing tiny little snippets of code about how to do things like procedurally rendering SMB3 underground level dirt tiles into CHR-RAM by using optimal code, having a recording mechanism to record the player input for replay functions, making a game entity management system, but I've never got to get it to work because every time I make a project like that, then I realize that I haven't even set up the main NES stuff like clearing the memory, setting the stack, setting the PPU, etc.. It just feels like a chore. I'm not sure am I just lazy or is it really a pain to some of you to have to start NES projects/experimentations from scratch every time you want to do something.
That's why I made a project template.
8bitMicroGuy wrote:Speaking of which, I've been getting crazy ideas like having a mapper that has framebuffers as patterntables which dynamically switch as the mapper detects scanlines
Mapper 96, used in Oeka Kids games for Famicom, uses nametable reads to trigger CHR RAM bank switches.
Rahsennor
Posts: 479
Joined: Thu Aug 20, 2015 3:09 am

Re: Is this normal to happen with programmers?

Post by Rahsennor »

Yup. That's totally normal. We all do it, I think.

My solution is to force myself to work anyway. Pick a simple goal, write it down so you can't cheat and tweak it, and write a program to do it. If you don't make it, pick something simpler. If you do, pick something harder. Repeat to infinity.

I've noticed that I have a much harder time doing the above in assembler than any other language. The less tedium you have to endure to get somewhere, the more likely you are to get there. There's a woeful shortage of compilers for the NES, but CC65 is usable for non-CPU-intensive projects. Maybe give that a try, if you haven't already?
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Is this normal to happen with programmers?

Post by FrankenGraphics »

2 cents...

stop thinking about programming (at least for now). start thinking about game design. Take a pen, a pair of scissors, a number of markers and a block of paper. start doodling away. cut placeholder rectangles with your scissors and use them as actors, walls, platforms, unidirectional passages, property changing flip switches. move them across maps (or just space) in that block. get a feel for how things interact. get a feel for how you want things to interact. how you want the player to interact. what signals what to the player. what happens if they do this. or that. Often, interesting things come out of unexpected combinations of more mundane things. Make notes of everything that feels good. Make notes of some things that doesn't. Elaborate why. Think a lot about the object of the game. Eventually, you grow notes that make a game. Keep that vision. Think what features are needed to complete that vision. Divide features into subfeatures. List them as tasks; prioritize them. Chip away one task a day at the very least. Say: I'm doing this task today, and these are upcoming. Repeat daily. Want to get things done faster? Maybe team up with somebody, explain your vision, let them in.

Use a project organizer. I use asana.com. There are others, but this one has proven the most effective for me at least, also for teams of varying size.
Last edited by FrankenGraphics on Mon Jan 29, 2018 7:44 pm, edited 2 times in total.
User avatar
Kasumi
Posts: 1293
Joined: Wed Apr 02, 2008 2:09 pm

Re: Is this normal to happen with programmers?

Post by Kasumi »

As motivation: All that thinking isn't netting you anything real. You have nothing to show for all that thinking. Your ideas have holes you don't see because you're not actually executing them. Get started.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Is this normal to happen with programmers?

Post by tokumaru »

I have started many NES projects from scratch, and have implemented the "basic framework" (i.e. the "boring stuff") many times, and just when things are about to get fun, I lose all motivation or something in the real world detracts me from NES development.

While I'm generally OK with using libraries and frameworks for modern development, I don't feel comfortable using other people's code on hardware as limited as the NES. There's so little power to work with that I feel like I can't waste any of it on design decisions I don't 100% agree with, and I also feel like I can't get the most out of an engine if I don't understand every tiny detail about it.

The end result is that I get stuck a lot, recoding the same systems over and over thinking I can do better than last time, because the long pauses I end up taking make me lose familiarity with my own projects.

Maybe I have to document my design decisions better, and make my code more modular so I can improve things piece by piece rather than throw the whole thing away and start from scratch every time.
psycopathicteen
Posts: 3140
Joined: Wed May 19, 2010 6:12 pm

Re: Is this normal to happen with programmers?

Post by psycopathicteen »

Every time I make something new, I always reuse code from past projects.

BTW, here's some ram clearing code:

Code: Select all

lda #$07
sta $01
lda #$00
sta $00
tay
-;
sta ($00),y
iny
bne -
dec $01
bpl -
sta $01
psycopathicteen
Posts: 3140
Joined: Wed May 19, 2010 6:12 pm

Re: Is this normal to happen with programmers?

Post by psycopathicteen »

My advice would be to take everything you have, and put it all together.
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: Is this normal to happen with programmers?

Post by GradualGames »

The absolute #1 best thing you can do to accomplish anything long term is develop a routine and stick to it. If you can get in the habit of *always* sitting down at certain times in your week at a certain time to work on your nes coding, you will come to expect that each time and your brain will actually "prepare" for those times automatically.

I thought I was just lucky that I got into a routine for nes dev, but I wanted to find a way to do this for composing as well. Eventually I found a way to incrementally improve my skills as a composer by relying on the phrase "nulla dies sine linea" every day which means "No day without its line." Just write one simple melody each day, doesn't matter if it sucks that day. It makes the brain EXPECT to be doing something at certain times, and you experience neurological growth by doing this.

Stay in a chaotic state of disorganization and you will have great difficulty making significant progress, except in those rare marathon spurts which last maybe a few weeks at a time. I used to have those when I was younger, and I don't miss them at all. Long term habits totally obliterate this type of behavior in effectiveness. This advice will work for anybody, mark my words. Good luck!

p.s. happy to hear you are using GGSound! :)

p.p.s. Another tip: If you are having trouble deciding on a project to work on, make a big list of project ideas. Then list out "pros" and "cons" as to which ones seem like they align best with what will make you happy or teach you or whatever your goals are. Before I got into nesdev, I had a huge doc like this with dozens of ideas! The only rule was, if I pick a project to work on, it MUST be completed before moving on to the next. Little did I know it'd start a rather big ball rolling....
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Is this normal to happen with programmers?

Post by FrankenGraphics »

gradualgames wrote:Just write one simple melody each day, doesn't matter if it sucks that day. It makes the brain EXPECT to be doing something at certain times, and you experience neurological growth by doing this.
I have a habit doing something similar. Maybe not *every day* - but on most occasions when i commute, i hum or whistle on my way to/from the stop. If anything crystalizes just the tiniest bit, i record it with my cellphone recorder. When i get back home, i either organize the clip into a category or work it out in software or on an instrument directly (more rare). Whenever i find a larger block of time to work with composition, i can dig into working on those lines and use all my second-rate recordings as inspiration which i'd otherwise have forgotten.

As i think benny andersson of abba fame said in one form or other, no composition is good when you first plot down your first idea of a melody or passage. It needs to be worked with, again and again. You're more likely to get the results you want when you start to craft it over time; methodically.

I say it's the same with game design and graphics. probably programming too.
calima
Posts: 1745
Joined: Tue Oct 06, 2015 10:16 am

Re: Is this normal to happen with programmers?

Post by calima »

Programming is different, at least ideally. If requirements are unclear or changing, then you often need to write, re-write and tune, but ideally you know exactly what you want, and when you start to write, it comes out perfect the first time. That also requires skill and knowledge of the target platform, naturally; if you don't know the platform intuitively, your first attempt will often be non-optimal.
User avatar
gauauu
Posts: 779
Joined: Sat Jan 09, 2016 9:21 pm
Location: Central Illinois, USA
Contact:

Re: Is this normal to happen with programmers?

Post by gauauu »

GradualGames wrote:The absolute #1 best thing you can do to accomplish anything long term is develop a routine and stick to it. If you can get in the habit of *always* sitting down at certain times in your week at a certain time to work on your nes coding, you will come to expect that each time and your brain will actually "prepare" for those times automatically.
What works for me is actually pretty different. The way my life is organized (or disorganized, really), I don't have a good routine time or schedule for my hobby projects. Some weeks I have an hour or two per night after the family goes to bed. Some weeks I might only have 15 minutes here or there.

So what I do is a lot of planning and thinking throughout the week (during drives, before falling asleep, etc), so that when I DO have time to work on something, I know exactly what I'm going to work on, and can dive right in. With a plan in place, and the design mostly worked out in my head, I can be a lot more productive when it comes time to actually do things.
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: Is this normal to happen with programmers?

Post by GradualGames »

gauauu wrote:
GradualGames wrote:The absolute #1 best thing you can do to accomplish anything long term is develop a routine and stick to it. If you can get in the habit of *always* sitting down at certain times in your week at a certain time to work on your nes coding, you will come to expect that each time and your brain will actually "prepare" for those times automatically.
What works for me is actually pretty different. The way my life is organized (or disorganized, really), I don't have a good routine time or schedule for my hobby projects. Some weeks I have an hour or two per night after the family goes to bed. Some weeks I might only have 15 minutes here or there.

So what I do is a lot of planning and thinking throughout the week (during drives, before falling asleep, etc), so that when I DO have time to work on something, I know exactly what I'm going to work on, and can dive right in. With a plan in place, and the design mostly worked out in my head, I can be a lot more productive when it comes time to actually do things.
Yeah, I wouldn't go so far as to say this will apply to everyone (even though I kind of did in my post); I've encountered people who just seem to be able to summon energy 24/7 and there's never any particular routine in place. I used to be a very very idle and lazy person---it appeared to be necessary in my case to get anything done at all. Folks who are not cursed with a naturally phlegmatic or lazy personality probably won't need this advice as much as I did. Plus, if you have a family requiring your time that would be challenging too, but may be why you find the motivation to fill those gaps of time with project work. It was after I got married that I finally had the motivation I needed, because my wife needed more of my time than I was initially willing to give up, so it kicked my butt into gear.
User avatar
FrankenGraphics
Formerly WheelInventor
Posts: 2064
Joined: Thu Apr 14, 2016 2:55 am
Location: Gothenburg, Sweden
Contact:

Re: Is this normal to happen with programmers?

Post by FrankenGraphics »

I've encountered people who just seem to be able to summon energy 24/7
This describes me (in periods). I sometimes enter a mania (it's like moving across a threshold and then i'm there) which can be very productive and last a week or two. It's only in my thirties that i've developed a routine for all the time which isn't spent inside such a bout of mania.
Post Reply