(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
05-15-24 08:16 PM
0 users currently in ROM Hacking.
Acmlm's Board - I3 Archive - ROM Hacking - A quick SPC700 RAM question.
  
User name:
Password:
Reply:
 
Options: - -
Quik-Attach:
Preview for more options

Max size 1.00 MB, types: png, gif, jpg, txt, zip, rar, tar, gz, 7z, ace, mp3, ogg, mid, ips, bz2, lzh, psd

UserPost
DJ Bouche
Posts: 110/111
The SPC700 is directly linked to the main CPU via 4 8-bit I/O ports. Through these the two can communicate (providing programs at both ends send/receive). Many early games had banks of the entire game's set of music loaded into the SPC700 bank the whole entire game. Some games would have 1-3 banks, and when a song from a particular bank was needed, it would load that bank (eg. Zelda 3, SMAS, SMW). Later, games would upload only the current song that was playing, giving the song much more space to use as you weren't restricted to having a whole set of songs in one bank. Other games, would have even more complex ways of communicating with the SPC rather than just sending a mere song number through the I/O port, or a command to play certain song at certain address in the SPC-RAM... these games would have music data streamed through the I/O ports in real time and/or upload samples into the SPC-RAM as they are needed. These are currently the games that cannot be ripped in the SPC format. (We need a more xSF like format with this, that emulates BOTH the main CPU and the APU).

To answer your question, as far as I know, and as far as I can remember all of $0100-FFFB is available. $F4-$F7 are the I/O ports I mentioned, other are probably vectors, I can't remember much about < $0100. $FFC0-$FFFF is boot code which is the initial state of the SPC700, a simple program that will accept the standard uploads from the main CPU.
HyperHacker
Posts: 3011/5072
SPC700 samples use BRR compression. Some games also streamed sound (upload audio data to the SPC700 in realtime), which makes it impossible to make a .spc dump of them.
Sukasa
Posts: 1534/2068
Yea, it's not compression.

Oh, and you can't overwrite the IPL ROM... but thewre is a certain hardware register you can set to disable it and access the RAM it was overwriting.
GeckoYamori
Posts: 89/114
Originally posted by Sukasa +
I believe it's called uploading only what you need at any one time.

I think Chrono Trigger did that.. I think it actually had three different binaries that were uploaded to the SPC700 RAM as needed.


I think that's different from compression. Isn't that how they made the Star Ocean score? Hence why it couldn't be ripped correctly as SPCs. However many other soundtracks that use more than 64kb have been ripped without any problems, Actraiser for example.
Unicorn_Poop
Posts: 11/15
Good, 64K bytes of RAM. That's what I needed to know.

But now a new question pops into mind.

Once you have uploaded the initial data to the APU-RAM, can you overwrite the IPL-ROM?

I know it's called ROM and it's only $40 bytes, but for the sake of completeness, it would be good to know.

If no one has answer for this, I'll just try to construct a APU loading program and test it out. But then again there is nothing that says emulators are perfect copies of the SNES.
Sukasa
Posts: 1524/2068
I believe it's called uploading only what you need at any one time.

I think Chrono Trigger did that.. I think it actually had three different binaries that were uploaded to the SPC700 RAM as needed.
GeckoYamori
Posts: 88/114
There is a workaround, it has been used by numerous composers. I think it's some sort of compression technique.
Yoronosuku
Posts: 756/1239
Um, no you can't. The SPC700 has 64kb of ram. That's it.
GeckoYamori
Posts: 87/114
You can override the 64kb limit. Most games that didn't ended up sounding pretty shitty.
Sukasa
Posts: 1521/2068
All 64KB is usable. Originally, the design was for 32KB, but at the last minute the design was change to double that amount. hence, 64KB SPC700 dumps.
Unicorn_Poop
Posts: 10/15
How much RAM is at your disposal when working with the SPC700?

I have read conflicting views on this.

The SNES manual says that there is 512K bits installed on board, but lists only addresses $0000 - $7FFF as the 'Standard Transmission Area,' whatever that means.

I have read documentation that states anything above $8000 is unusable.

However I have looked at the APU RAM in SNES9x's debugger and it appears a full 64K Bytes are usable.

The only thing I can figure is that you can only access addresses $0000-$7FFF when sending data from the SNES CPU, and that the rest of the RAM can only be used by the APU-IC.

Please tell me if I am right, or at least the facts.

Thanks.
Acmlm's Board - I3 Archive - ROM Hacking - A quick SPC700 RAM question.


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.004 seconds; used 356.77 kB (max 406.23 kB)