It is currently Thu Feb 22, 2018 4:17 am

All times are UTC - 7 hours





Post new topic Reply to topic  [ 15 posts ] 
Author Message
PostPosted: Mon Jan 29, 2018 6:01 pm 
Offline

Joined: Sun Mar 08, 2015 12:23 pm
Posts: 255
Location: Croatia
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?


Top
 Profile  
 
PostPosted: Mon Jan 29, 2018 6:20 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19661
Location: NE Indiana, USA (NTSC)
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.


Top
 Profile  
 
PostPosted: Mon Jan 29, 2018 6:34 pm 
Offline

Joined: Thu Aug 20, 2015 3:09 am
Posts: 326
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?


Top
 Profile  
 
PostPosted: Mon Jan 29, 2018 7:31 pm 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1368
Location: Gothenburg, Sweden
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.

_________________
http://www.frankengraphics.com - personal NES blog


Last edited by FrankenGraphics on Mon Jan 29, 2018 7:44 pm, edited 2 times in total.

Top
 Profile  
 
PostPosted: Mon Jan 29, 2018 7:40 pm 
Offline
User avatar

Joined: Wed Apr 02, 2008 2:09 pm
Posts: 1093
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.

_________________
https://kasumi.itch.io/indivisible


Top
 Profile  
 
PostPosted: Mon Jan 29, 2018 7:46 pm 
Offline
User avatar

Joined: Sat Feb 12, 2005 9:43 pm
Posts: 10298
Location: Rio de Janeiro - Brazil
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.


Top
 Profile  
 
PostPosted: Mon Jan 29, 2018 8:21 pm 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2539
Every time I make something new, I always reuse code from past projects.

BTW, here's some ram clearing code:

Code:
lda #$07
sta $01
lda #$00
sta $00
tay
-;
sta ($00),y
iny
bne -
dec $01
bpl -
sta $01


Top
 Profile  
 
PostPosted: Mon Jan 29, 2018 10:19 pm 
Offline

Joined: Tue Feb 07, 2017 2:03 am
Posts: 279
http://www.commitstrip.com/en/2014/11/2 ... ect-story/


Top
 Profile  
 
PostPosted: Tue Jan 30, 2018 12:59 pm 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2539
My advice would be to take everything you have, and put it all together.


Top
 Profile  
 
PostPosted: Tue Jan 30, 2018 3:02 pm 
Offline
User avatar

Joined: Sun Nov 09, 2008 9:18 pm
Posts: 1073
Location: Pennsylvania, USA
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....


Top
 Profile  
 
PostPosted: Tue Jan 30, 2018 3:12 pm 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1368
Location: Gothenburg, Sweden
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.

_________________
http://www.frankengraphics.com - personal NES blog


Top
 Profile  
 
PostPosted: Wed Jan 31, 2018 2:46 am 
Offline

Joined: Tue Oct 06, 2015 10:16 am
Posts: 666
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.


Top
 Profile  
 
PostPosted: Wed Jan 31, 2018 8:39 am 
Offline
User avatar

Joined: Sat Jan 09, 2016 9:21 pm
Posts: 324
Location: Central Illinois, USA
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.

_________________
My games: http://www.bitethechili.com


Top
 Profile  
 
PostPosted: Wed Jan 31, 2018 8:52 am 
Offline
User avatar

Joined: Sun Nov 09, 2008 9:18 pm
Posts: 1073
Location: Pennsylvania, USA
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.


Top
 Profile  
 
PostPosted: Wed Jan 31, 2018 9:16 am 
Offline
Formerly WheelInventor

Joined: Thu Apr 14, 2016 2:55 am
Posts: 1368
Location: Gothenburg, Sweden
Quote:
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.

_________________
http://www.frankengraphics.com - personal NES blog


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 15 posts ] 

All times are UTC - 7 hours


Who is online

Users browsing this forum: ccovell and 6 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group