The SNES Project!

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
The SNES Project!
by on (#141335)
So ever since the beginning of 2015, there's a little something that I've been working on "behind the scenes".

Basically it's a personal dare.

Not only do I have to make a SNES game, but I also have to write all the tools for doing so. This explains why I made a palette converter earlier on.

So why haven't I shown any tools since then? Because what I'm working on now is the assembler. It'll be very basic and somewhat low-level, but maybe eventually I'll post it online when it's even usable.

The main reason this has been to myself this whole time is mostly cuz I'm just afraid of people saying it's not worth my time and I should do something that would actually be worth it. To those who would agree to that statement: I don't care.

Anyway, I've been maintaining a small blog of the journey. Hope you guys enjoy it, and follow along as I go.

http://thesnesproj.blogspot.com/
Re: The SNES Project!
by on (#141355)
Nice bro, good luck and happy success :)
Re: The SNES Project!
by on (#141358)
bazz wrote:
Nice bro, good luck and happy success :)

Thanks. I've actually had tons of luck today. Implemented .db, .dw, .dl and .dd for 8/16/24/32 bit numbers. Also got a tiny banking system and even working file output.

Basically, if you want to make a whole game in one file out of raw data, be my guest, as this program can handle a bit of it. (No, the actual 65816 instruction hasn't been implemented yet XD).

Still need to add in label support, however...as for preprocessor, I don't even know what I'm gonna do about that. It might have to wait. For a really long time.

I went ahead and put what I've gotten done so far on GitHub: https://github.com/NicklausW/neptune
Re: The SNES Project!
by on (#141359)
nicklausw wrote:
bazz wrote:
Nice bro, good luck and happy success :)

Thanks. I've actually had tons of luck today. Implemented .db, .dw, .dl and .dd for 8/16/24/32 bit numbers. Also got a tiny banking system and even working file output.

Basically, if you want to make a whole game in one file out of raw data, be my guest, as this program can handle a bit of it. (No, the actual 65816 instruction hasn't been implemented yet XD).

Still need to add in label support, however...as for preprocessor, I don't even know what I'm gonna do about that. It might have to wait. For a really long time.

I went ahead and put what I've gotten done so far on GitHub: https://github.com/NicklausW/neptune


bro you skipped a step.. You need to write the Operating System that you dev on... :P lolol JK but that's insane you'll go down in history for doing this.
Re: The SNES Project!
by on (#141360)
XD Well, I built the computer I'm doing all this on, so let's just skip a step for that...
Re: The SNES Project!
by on (#141361)
...And then you built the house you're in and the local power plant... Oh, and the factory that made the parts you used to make the computer.
Re: The SNES Project!
by on (#141362)
For my own work, I've operated under a different rule: If I can use a component that is publicly available as free software, I can skip making that component. This let me skip these components:
  • Operating system: Xubuntu (free except for a WLAN device driver not directly involved in the build process)
  • Assembler and linker toolchain: cc65 (free except for the C compiler part that I'm not using at all)
  • Tool frameworks: Python, Pillow, NumPy, SoX, Pygame
  • Audio editor: Audacity
I wrote my own graphics conversion tools using Pillow and an audio conversion tool.
Re: The SNES Project!
by on (#141363)
tepples wrote:
For my own work, I've operated under a different rule: If I can use a component that is publicly available as free software, I can skip making that component. This let me skip these components:
  • Operating system: Xubuntu (free except for a WLAN device driver not directly involved in the build process)
  • Assembler and linker toolchain: cc65 (free except for the C compiler part that I'm not using at all)
  • Tool frameworks: Python, Pillow, NumPy, SoX, Pygame
  • Audio editor: Audacity
I wrote my own graphics conversion tools using Pillow and an audio conversion tool.


Yeah but in his case it's more legendary if he makes his own assembler and gfx tools and even audio!! But if you succomb to SNES Tracker in the future I will understand :) BUT YOU CANT!!! YOU MUST MAKE YOUR OWN. BECOME THE LEGEND YOU SET OUT TO BE!!! <3
Re: The SNES Project!
by on (#141364)
Wait, cc65 isn't entirely free?
Re: The SNES Project!
by on (#141365)
nicklausw wrote:
Wait, cc65 isn't entirely free?


no it is "If I can use a component that is publicly available as free software"
Re: The SNES Project!
by on (#141366)
cc65 isn't DFSG because the license explicitly forbids charging for distribution. Meh.
Re: The SNES Project!
by on (#141367)
Huh...never seen a license like that one.

I prefer GPL, cuz copyleft. My only problem is the document's size. That thing is frickin' huge!
Re: The SNES Project!
by on (#141368)
nicklausw wrote:
That thing is frickin' huge!


that's what she said :lol:
Re: The SNES Project!
by on (#141369)
bazz wrote:
nicklausw wrote:
That thing is frickin' huge!


that's what she said :lol:

I'm sure she'd agree. :P
Re: The SNES Project!
by on (#141370)
lidnariq wrote:
cc65 isn't DFSG because the license explicitly forbids charging for distribution.

Fortunately, everything in the cc65 package except the C compiler is under the zlib license, a GPL-compatible non-copyleft free software license. This puts ca65 and ld65 squarely within "free tools".
Re: The SNES Project!
by on (#141371)
Espozo wrote:
...And then you built the house you're in and the local power plant... Oh, and the factory that made the parts you used to make the computer.


Life is different when you're stranded on a deserted island with two sailors, an elderly rich couple, a movie star, and the rest.
Re: The SNES Project!
by on (#141374)
I've just added a labels feature...well, sort of. The label has to start with a semicolon but it works.

Code:
:i_am_a_valid_label
i_am_currently_not:
i_am_also_currently_not


This will be the last of me for the day...it's 5 'till midnight and tons of progress has been made. School is cancelled tomorrow for bad weather, so that means that much more time to work on neptune. :mrgreen:
Re: The SNES Project!
by on (#141375)
I'm guessing that it's colder in ... than it is in Texas? (Alright, I'll stop being a jerk now. :oops: )
Re: The SNES Project!
by on (#141376)
Espozo wrote:
I'm guessing that it's colder in ... than it is in Texas? (Alright, I'll stop being a jerk now. :oops: )

In my actual location we had tons of snow hit us last year, and it stuck to the ground so quickly that all hell was going on in the roads with traffic. I would know, cuz I was stuck in it myself. XD So now the governor is paranoid and is begging the schools to cancel.

It's nice in ... though. I like it.
Re: The SNES Project!
by on (#141377)
Yeah, if there's even a quarter inch of sleet, people freak out and the schools close. To people over here, sleet is snow to them. People teased me because I didn't go out to play in the "snow", but if you tried to make a snowman, you'd end up picking up more dirt than any "snow". The temperature does get pretty cold here, but my luck, there is never any precipitation to form any snow. Seriously, It was raining like a monsoon over here this morning and it was about 60 degrees outside, and later, it stops raining and it's about 40 degrees.
Re: The SNES Project!
by on (#141379)
Made one more update: improved user-thrown errors. It took 2 commits because of stupid pasting errors...
Re: The SNES Project!
by on (#141403)
Another update: neptune now supports some 65816 opcodes. Only ones that have no args to them, like nop. Sadly plenty to go...
Re: The SNES Project!
by on (#141722)
(ew, triple posting).

Thought I'd just post a quick update on here that neptune has had tons of progress coming along with it. Plenty of fixes and additions, and a large speed-up.

Reminder that the repo is always open to look at: https://github.com/NicklausW/neptune
Re: The SNES Project!
by on (#141730)
I was just quickly glancing through the source.
Code:
   fn = malloc(strlen(argv[0]));
   strcpy(fn, argv[0]);

That's a buffer overflow. Similar cases appear elsewhere in the code.
Re: The SNES Project!
by on (#141745)
thefox wrote:
I was just quickly glancing through the source.
Code:
   fn = malloc(strlen(argv[0]));
   strcpy(fn, argv[0]);

That's a buffer overflow. Similar cases appear elsewhere in the code.


Fix: malloc(strlen(argv[0])+1);
Re: The SNES Project!
by on (#141765)
Thanks, fixed that right up.
Re: The SNES Project!
by on (#141794)
(This might be considered cheating, but I'm using non-self-made software JUST for testing purposes).

Any idea why Snes9X doesn't seem to recognize a lorom header, but ZSNES sees it just fine?
Re: The SNES Project!
by on (#141796)
nicklausw wrote:
(This might be considered cheating, but I'm using non-self-made software JUST for testing purposes).

If that's cheating, than I guess 99% percent of the people here are only cheating. :wink:
Re: The SNES Project!
by on (#141797)
Espozo wrote:
nicklausw wrote:
(This might be considered cheating, but I'm using non-self-made software JUST for testing purposes).

If that's cheating, than I guess 99% percent of the people here are only cheating. :wink:

Aw, c'mon, tell me you at least read the first post to know what I'm talking about. XD
Re: The SNES Project!
by on (#141802)
Espozo wrote:
If that's cheating, than I guess 99% percent of the people here are only cheating. :wink:

Keep in mind that "cheating" means doing something different from what you committed to doing. If nicklausw said he'd only use the tools he made himself, then yeah, he's cheating, but everyone else who made no such commitment can do the exact same thing and they won't be cheating.

This is true even in romantic relationships: hooking up with someone else isn't necessarily cheating... it depends on what the agreement between the couple is. Some couples are OK with their partners seeing other people, so in this case it won't be cheating. Problem is that not everyone makes the rules perfectly clear beforehand, so it isn't always this easy to say whether cheating took place.
Re: The SNES Project!
by on (#141804)
Nevermind. Just dismiss what I said.

tokumaru wrote:
Some couples are OK with their partners seeing other people, so in this case it won't be cheating.

What, you mean like people who practice polygamy?
Re: The SNES Project!
by on (#141806)
Espozo wrote:
What, you mean like people who practice polygamy?

Well... yeah, but also people who just want to have some quick fun with people other than their main partner. I'm not one of those people, so I can't tell you much more about any of this, but you can be certain that there's a lot of weird shit out there, but as long as everyone involved has agreed to such shit, there's no cheating going on, no matter how weird the situation is.
Re: The SNES Project!
by on (#141808)
nicklausw wrote:
Any idea why Snes9X doesn't seem to recognize a lorom header, but ZSNES sees it just fine?

Things kinda got off-topic about polygamy, so I'm re-posting this question. If anyone can answer, that is.

Yes, I'm bending the rules, but it's not like someone else made them. XD They is mine. MIYNE.
Re: The SNES Project!
by on (#141811)
nicklausw wrote:
nicklausw wrote:Any idea why Snes9X doesn't seem to recognize a lorom header, but ZSNES sees it just fine?Things kinda got off-topic about polygamy, so I'm re-posting this question. If anyone can answer, that is.

Woah, settle down now. :wink:

Anyway, what do you even mean? It looks good to me.

Attachment:
SNES9x LoRom.png
SNES9x LoRom.png [ 1.05 KiB | Viewed 1128 times ]
Re: The SNES Project!
by on (#142110)
I'm still trying to work with the headers. Found that Snes9X wouldn't recognize it unless I put a bunch of 0xFF's after the main thing. Got checksum kinda working at least. :mrgreen: