SNES Newbie

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.
Post Reply
User avatar
MasterF0x
Posts: 7
Joined: Thu Nov 16, 2017 10:42 am

SNES Newbie

Post by MasterF0x » Thu Nov 16, 2017 1:20 pm

Hello!

I have recently taken an interest in programming for the SNES, and I've gotten to know the basics of the console's architecture.
I've messed with sprites, backgrounds, tile collision, and simple horizontal-DMA effects, but I feel like I don't know enough to advance further into a large project for the console. (I actually made a few small projects for SNES with PVSNESLib years ago but I had no idea how the console worked since you work with a higher level language and I didn't bother looking at any documentation at the time.)

Here's a video I made showcasing what I've been messing around with using the WLA-DX cross assembler and I'm quite happy with its progress so far. (Of course, the code needs some cleaning up. :roll:)

https://www.youtube.com/watch?v=ttLVtmIrmyo

I'd like to know more about what things are, the terminologies behind them, and how they work; Great example is "metasprite". I've heard this term quite a few times while lurking around here on the forums and I'm not sure what it is. I know the general purpose of OAM and how there's a low and high table (512 bytes for low and 32 for high?) but never heard of metasprites until visiting the forum.

I Think I understand GP-DMA well enough to utilize it for simple tasks like transferring, let's say, a tile into VRAM.
SPC700 is by far the most complicated thing I'm having trouble understanding, and will definitely need a few pointers to guide me in the right direction.

Responses and resources are definitely appreciated!

tepples
Posts: 22281
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: SNES Newbie

Post by tepples » Thu Nov 16, 2017 1:56 pm

"Metasprite" means a single cel of animation made out of multiple entries in the OAM. For example, in Super Mario World, Mario's cels are roughly 16x32 pixels in size made of two 16x16 pixel sprites. Sprites in a metasprite need not be aligned corner-to-corner; Yoshi's, for instance, are offset somewhat to put his head forward of his body.

For SPC700, when starting, you'll want to use a third-party engine. Right now, the most complete engine available for homebrew is probably SNES GSS.

User avatar
Sumez
Posts: 920
Joined: Thu Sep 15, 2016 6:29 am
Location: Denmark (PAL)

Re: SNES Newbie

Post by Sumez » Thu Nov 16, 2017 1:58 pm

A metasprite is not a hardware thing, but a common concept in game programming.
It's basically a sprite made out of multiple smaller hardware sprites. So one way to define a metasprite is with a bunch of data that your code knows how to interpret when writing to the sprite buffer.

Similar terminology is used with metasprites = a collection of smaller sprites, and a common way to compress larger pieces of level data in a simple manner.

edit: tepples beat me to it, for some reason the forum didn't warn me as it usually does :)

User avatar
MasterF0x
Posts: 7
Joined: Thu Nov 16, 2017 10:42 am

Re: SNES Newbie

Post by MasterF0x » Thu Nov 16, 2017 3:28 pm

Ah, okay, makes a ton of sense.
Thanks, guys!

User avatar
MasterF0x
Posts: 7
Joined: Thu Nov 16, 2017 10:42 am

Re: SNES Newbie

Post by MasterF0x » Tue Feb 06, 2018 12:17 am

Hmm, I've been trying to look more into the SPC-700 and implement the SNES GSS audio driver for my own game engine, but seem to have an issue.
The driver data is transferred into SPC RAM at $0200 and is executed, but once I set a GGS command, SPC is either always busy (which results in a endless check loop) or nothing happens.

Sorry if this is an idiotic post; I'm very ignorant to how the SPC-700 exactly works and have been understanding it by basically observing others' code.

User avatar
MottZilla
Posts: 2835
Joined: Wed Dec 06, 2006 8:18 pm

Re: SNES Newbie

Post by MottZilla » Tue Feb 06, 2018 11:51 am

I'm not sure but I have a random suggestion. After you transfer the data to the SPC are you immediately issuing a command or do you let some time pass before then? Maybe you are too quickly trying to issue a command that the SPC program isn't ready and doesn't see your command and never gives the response the 65816 wants to see.

The other suggestion would be to try running your code in an emulator that lets you see both SPC and SCPU status in debug windows. Then you could really see why the deadlock happens.

User avatar
HihiDanni
Posts: 186
Joined: Tue Apr 05, 2016 5:25 pm

Re: SNES Newbie

Post by HihiDanni » Tue Feb 06, 2018 4:37 pm

You may have run into the same pitfall that I did initially - the first two bytes of the driver and music files exported from the SNESGSS tracker describe the byte size of those files, and therefore should not be transferred to the SPC.
SNES NTSC 2/1/3 1CHIP | serial number UN318588627

User avatar
MasterF0x
Posts: 7
Joined: Thu Nov 16, 2017 10:42 am

Re: SNES Newbie

Post by MasterF0x » Tue Feb 06, 2018 5:43 pm

HihiDanni wrote:You may have run into the same pitfall that I did initially - the first two bytes of the driver and music files exported from the SNESGSS tracker describe the byte size of those files, and therefore should not be transferred to the SPC.
Wow, you're a life saver. That did the trick; thanks a ton!
I would have never figured that out on my own.

User avatar
MasterF0x
Posts: 7
Joined: Thu Nov 16, 2017 10:42 am

Re: SNES Newbie

Post by MasterF0x » Sun Feb 11, 2018 9:48 am


drludos
Posts: 61
Joined: Mon Dec 11, 2017 4:01 pm

Re: SNES Newbie

Post by drludos » Sun Feb 11, 2018 11:54 am

That's super cool congratulations on your progress! :)


Now, that you have a huge animated sprite, some HMDA gradient, and sound working, you're all set to make a game! Do you have any plan for it yet?
Download ROMs of my games: https://drludos.itch.io/
Support my work and get access to beta and prototypes: https://www.patreon.com/drludos

User avatar
MasterF0x
Posts: 7
Joined: Thu Nov 16, 2017 10:42 am

Re: SNES Newbie

Post by MasterF0x » Mon Feb 12, 2018 9:30 am

drludos wrote:That's super cool congratulations on your progress! :)


Now, that you have a huge animated sprite, some HMDA gradient, and sound working, you're all set to make a game! Do you have any plan for it yet?
Something akin to Super Smash Brothers, though not entirely sure yet! :lol:
There are still quite a few things I need to do before I'm ready to work on the game.

Post Reply