Are High SNES Homebrew Expectations Justified?

Discussion of hardware and software development for Super NES and Super Famicom.

Moderator: Moderators

Forum rules
  • For making cartridges of your Super NES games, see Reproduction.

Are High SNES Homebrew Expectations Justified?

Yes if selling, no if not selling
11
44%
Yes for both selling and not selling
2
8%
Depends
6
24%
No
3
12%
I don't know
1
4%
I don't care
2
8%
 
Total votes: 25

User avatar
Bregalad
Posts: 8008
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Re: Are High SNES Homebrew Expectations Justified?

Post by Bregalad » Sat Nov 07, 2020 2:41 pm

Ah sorry I totally misunderstood what you were trying to do. I tought you were trying to stream music in real-time in the SPC using HDMA ; instead you're using it to bypass the SPC700 entierely and write to the S-DSP registers using the ROM bootloader. My bad.

Since the release of Super Jukebox I've been wanting to write my own SNES sound engine but yeah... it's been a long time.
Useless, lumbering half-wits don't scare us.

User avatar
Señor Ventura
Posts: 177
Joined: Sat Aug 20, 2016 3:58 am

Re: Are High SNES Homebrew Expectations Justified?

Post by Señor Ventura » Sat Nov 07, 2020 3:18 pm

psycopathicteen wrote:
Sat Nov 07, 2020 12:58 pm
Music-wise it's pretty hard getting something as good as existing games. I think an HDMA engine would actually make it easier on me just because I find the 65816 much easier to work with.
I think the snes scene has a lack of sharing libraries and developed tools in comparison with another platforms. An engine that allows transfer high quality samples sounds quite hard to carry out, but once done, there is nothing more to do tan copy & paste (well, you know).

Using HDMA for samples is a good boost, but you lose everything else.

How donkey kong country manages its music?.

psycopathicteen
Posts: 2980
Joined: Wed May 19, 2010 6:12 pm

Re: Are High SNES Homebrew Expectations Justified?

Post by psycopathicteen » Sat Nov 07, 2020 7:00 pm

Señor Ventura wrote:
Sat Nov 07, 2020 3:18 pm
psycopathicteen wrote:
Sat Nov 07, 2020 12:58 pm
Music-wise it's pretty hard getting something as good as existing games. I think an HDMA engine would actually make it easier on me just because I find the 65816 much easier to work with.
I think the snes scene has a lack of sharing libraries and developed tools in comparison with another platforms. An engine that allows transfer high quality samples sounds quite hard to carry out, but once done, there is nothing more to do tan copy & paste (well, you know).

Using HDMA for samples is a good boost, but you lose everything else.

How donkey kong country manages its music?.
What do you mean by you lose everything else?

User avatar
Nikku4211
Posts: 383
Joined: Sun Dec 15, 2019 1:28 pm
Location: Bronx, New York
Contact:

Re: Are High SNES Homebrew Expectations Justified?

Post by Nikku4211 » Sat Nov 07, 2020 7:28 pm

psycopathicteen wrote:
Sat Nov 07, 2020 7:00 pm
Señor Ventura wrote:
Sat Nov 07, 2020 3:18 pm
Using HDMA for samples is a good boost, but you lose everything else.
What do you mean by you lose everything else?
Probably talking about the DMA channels being taken up by HDMA.
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.

psycopathicteen
Posts: 2980
Joined: Wed May 19, 2010 6:12 pm

Re: Are High SNES Homebrew Expectations Justified?

Post by psycopathicteen » Sat Nov 07, 2020 7:30 pm

Bregalad wrote:
Sat Nov 07, 2020 2:41 pm
Ah sorry I totally misunderstood what you were trying to do. I tought you were trying to stream music in real-time in the SPC using HDMA ; instead you're using it to bypass the SPC700 entierely and write to the S-DSP registers using the ROM bootloader. My bad.

Since the release of Super Jukebox I've been wanting to write my own SNES sound engine but yeah... it's been a long time.
I'm not planning on using the bootloader. I'm using my own loop. The bootloader routine is too convoluted.

I could actually do both stream music and dsp writes with this approach.

Oziphantom
Posts: 1080
Joined: Tue Feb 07, 2017 2:03 am

Re: Are High SNES Homebrew Expectations Justified?

Post by Oziphantom » Sat Nov 07, 2020 11:28 pm

if you can code the 65816, then you can code the SPC-700 to do what you directly. Its just a 6502 with hardware mul and I think div. Having it run in parallel is a huge speed boost. Since the SPC-700 is out of sync with the SNES's clock, you want to avoid direct contact as much as possible, its just more pain.

Oziphantom
Posts: 1080
Joined: Tue Feb 07, 2017 2:03 am

Re: Are High SNES Homebrew Expectations Justified?

Post by Oziphantom » Sat Nov 07, 2020 11:29 pm

Nikku4211 wrote:
Sat Nov 07, 2020 11:54 am
Bregalad wrote:
Sat Nov 07, 2020 11:40 am
No offense but before doing overcomplicated things that push the system to its limit, you should fist make something as good as existing games on the platofm...
yeah bro wheres my chrono trigger-type magnum opus boi?

wheres my super mario world 3??
There are plenty of hacks.

Oziphantom
Posts: 1080
Joined: Tue Feb 07, 2017 2:03 am

Re: Are High SNES Homebrew Expectations Justified?

Post by Oziphantom » Sat Nov 07, 2020 11:35 pm

rebuilding the DKC render to sprites tech might make things easier, doing a bunch of nurbs in blender vs piles of pixel art would probably reduce dev effort a fair amount.

User avatar
Nikku4211
Posts: 383
Joined: Sun Dec 15, 2019 1:28 pm
Location: Bronx, New York
Contact:

Re: Are High SNES Homebrew Expectations Justified?

Post by Nikku4211 » Sat Nov 07, 2020 11:36 pm

Oziphantom wrote:
Sat Nov 07, 2020 11:29 pm
Nikku4211 wrote:
Sat Nov 07, 2020 11:54 am
yeah bro wheres my chrono trigger-type magnum opus boi?

wheres my super mario world 3??
There are plenty of hacks.
A sequel should not be a hack, it should innovate.

And I don't mean cheap gimmicks, I mean actually try to meaningfully improve upon the previous game.

Also, nice double post m8.
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.

User avatar
Bregalad
Posts: 8008
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Re: Are High SNES Homebrew Expectations Justified?

Post by Bregalad » Sun Nov 08, 2020 4:05 am

Oziphantom wrote:
Sat Nov 07, 2020 11:28 pm
if you can code the 65816, then you can code the SPC-700 to do what you directly. Its just a 6502 with hardware mul and I think div. Having it run in parallel is a huge speed boost. Since the SPC-700 is out of sync with the SNES's clock, you want to avoid direct contact as much as possible, its just more pain.
Excactly. Actually the hardest part is the communication between SPC-700 and 65816 so it sounds like he actually coded only the hardest part of a sound engine !
Useless, lumbering half-wits don't scare us.

Pokun
Posts: 1760
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Are High SNES Homebrew Expectations Justified?

Post by Pokun » Sun Nov 08, 2020 7:36 am

Oziphantom wrote:
Sat Nov 07, 2020 11:35 pm
rebuilding the DKC render to sprites tech might make things easier, doing a bunch of nurbs in blender vs piles of pixel art would probably reduce dev effort a fair amount.
I guess, if you are more comfortable making 3D models than pixel art anyway. Pre-rendered graphics does give an impact to the art style of the game though.

psycopathicteen
Posts: 2980
Joined: Wed May 19, 2010 6:12 pm

Re: Are High SNES Homebrew Expectations Justified?

Post by psycopathicteen » Sun Nov 08, 2020 10:42 am

Bregalad wrote:
Sun Nov 08, 2020 4:05 am
Oziphantom wrote:
Sat Nov 07, 2020 11:28 pm
if you can code the 65816, then you can code the SPC-700 to do what you directly. Its just a 6502 with hardware mul and I think div. Having it run in parallel is a huge speed boost. Since the SPC-700 is out of sync with the SNES's clock, you want to avoid direct contact as much as possible, its just more pain.
Excactly. Actually the hardest part is the communication between SPC-700 and 65816 so it sounds like he actually coded only the hardest part of a sound engine !
I'm making a music program, so I need as much communication as possible.

Pokun
Posts: 1760
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Are High SNES Homebrew Expectations Justified?

Post by Pokun » Fri Nov 13, 2020 6:39 am

All these SNES discussions piqued my interest in picking up SNES homebrew again. I reused code from previous failed attempts years ago but switched assembler to WLA-DX, and finally got everything to work as expected. One problem of SNES development for me has been about finding a good 65816 assembler and an SPC-700 assembler. And WLA-DX got both those covered. I take back anything bad I've said about it in the past, it's a wonderful assembler. Optiroc's tools superfamiconv and superfamicheck also makes SNES homebrew much easier nowadays.

In the past I was turned off by the fact that WLA-DX tries to be smart and do way too much for you, including the header, vector tables, banks and that weird slot system. But reading the readme I noticed that only the memory map and banking directives are actually mandatory. And those are done with some brief code at the start, the rest can be done manually using classic .org, .orga and .base directives, while the possibility of more advanced sections is still there but optional. The header and vector tables can also be done manually using .db and .dw directives as the header directives are not mandatory. Direct page addressing and such things doesn't seem to be a problem either as it can easily be manually set to assemble like you want. It makes sure to stay out of your way.

Before I tried WLA-DX, I made an attempt with 64tass. It seemed to work fine, but this assembler seems to just love PETSCII way too much. I can't for the life of me get it to assemble strings as ASCII properly, and the manual is very brief on explaining how these things works.

Oziphantom
Posts: 1080
Joined: Tue Feb 07, 2017 2:03 am

Re: Are High SNES Homebrew Expectations Justified?

Post by Oziphantom » Fri Nov 13, 2020 7:08 am

WLA-DX is a horrible assembler for 65XX ( best in class for Z80 ). It will send you insane. The problem is the linker can't modify the code. This works fine for Z80 which it was designed for, but on 65816 it can cause you lots of random bugs.

LDA #someLabel

now if someLabel is in the DP, you want the DP version of LDA but its in another bank you want the long version. Problem is this then changes the number of bytes the instruction needs to use and the linker can't do it. So it will just put ABS. Which may or may not be what you want. Leading you to write code along the lines of

Code: Select all

LDA.B MyVar
STA.W MyOtherVar
LDA.L LongVar
STA.W Register
It also has a lot of issues getting the :Bank of labels, to the point you just start hardcoding them.

64tass docs are top of the line, and while the docs on cdef may seem brief it really is that simple. Basically from the manual

Code: Select all

.enc "ascii"	;define an ascii encoding
.cdef " ~", 32  ;identity for printable
which basically this says for each character in the range starting with " " ( ascii code 32) to ascii letter ~ (126), map start from 32. thus " " = 32, "!" = 33, "'"' = 34 ... "}" = 175 "~" = 176
Since the text file ( remember to assemble with the -a option) is in ascii mode that will magically convert the whole printable set. If you want to do new lines etc you would then expand it to be

Code: Select all

.enc "ascii"	;define an ascii encoding
.cdef " ~", 32  ;identity for printable
.edef "\n", 13  ;one byte control codes 

User avatar
Nikku4211
Posts: 383
Joined: Sun Dec 15, 2019 1:28 pm
Location: Bronx, New York
Contact:

Re: Are High SNES Homebrew Expectations Justified?

Post by Nikku4211 » Fri Nov 13, 2020 8:30 am

Okay, but like, what about CA65? Does it suck or something?
I have an ASD, so empathy is not natural for me. If I hurt you, I apologise.

Post Reply