nesdev.com
http://forums.nesdev.com/

SNES Newbie
http://forums.nesdev.com/viewtopic.php?f=12&t=16714
Page 1 of 1

Author:  MasterF0x [ Thu Nov 16, 2017 1:20 pm ]
Post subject:  SNES Newbie

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!

Author:  tepples [ Thu Nov 16, 2017 1:56 pm ]
Post subject:  Re: SNES Newbie

"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.

Author:  Sumez [ Thu Nov 16, 2017 1:58 pm ]
Post subject:  Re: SNES Newbie

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 :)

Author:  MasterF0x [ Thu Nov 16, 2017 3:28 pm ]
Post subject:  Re: SNES Newbie

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

Author:  MasterF0x [ Tue Feb 06, 2018 12:17 am ]
Post subject:  Re: SNES Newbie

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.

Author:  MottZilla [ Tue Feb 06, 2018 11:51 am ]
Post subject:  Re: SNES Newbie

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.

Author:  HihiDanni [ Tue Feb 06, 2018 4:37 pm ]
Post subject:  Re: SNES Newbie

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.

Author:  MasterF0x [ Tue Feb 06, 2018 5:43 pm ]
Post subject:  Re: SNES Newbie

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.

Author:  MasterF0x [ Sun Feb 11, 2018 9:48 am ]
Post subject:  Re: SNES Newbie

Just uploaded this!

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

Author:  drludos [ Sun Feb 11, 2018 11:54 am ]
Post subject:  Re: SNES Newbie

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?

Author:  MasterF0x [ Mon Feb 12, 2018 9:30 am ]
Post subject:  Re: SNES Newbie

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.

Page 1 of 1 All times are UTC - 7 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/