Language…
9 users online: autisticsceptile1993, Batata Douce, crocodileman94, DPBOX, Dzing, eltiolavara9, matthwsan, Sweetdude, TheBourgyman - Guests: 255 - Bots: 305
Users: 64,795 (2,377 active)
Latest user: mathew

SPC700 log

Woah, that's a lot. I can imagine this being very useful for the music people out there, and I'll make sure to check it in greater detail should I ever want to concern myself with music more.

Also, here's an error I came across by chance:

Code
mov x, a 	; move X into A



 
Cool. This should be useful for homebrew projects and the like; I'll have to save a copy as an HTML file once it's definitively finished.

Some things I'd like to point out, though:

- Doesn't XCN switch the nybbles of A (for example, MOV A,#$5A : XCN would result in A = #$A5)? If it works as you said (basically a single-byte EOR #$FF)...well, then it's misnamed.
- Don't opcodes that specify a certain bit of an operand but have only one hex value—such as MOV1 c,$0000.3—only work for ARAM addresses $0000-$1FFF? Since 3 bits of the operand are used to specify which bit is affected, then only 13 bits are left for the address itself.
- I believe TCALL uses one of 16 2-byte pointers starting at $FFDE and going backward to determine which address to call. So TCALL 0 would be equal to CALL [$FFDE], TCALL 1 = CALL [$FFDC], ... TCALL 15 = CALL [$FFC0]. This would be useful for commonly-used subroutines; in SMW, $0697 and that one in $12xx come to mind.
- It might be worth noting that another way of writing BBS1 $12.3 (or any similar opcode) is BBS3 $12, with the bit number replacing the "1". In fact, the "1" shouldn't even need to be there when the operand is specifying the bit. I think the current version of Asar doesn't support this, but 1.30 should.
- "On power on, all three TnOUT have the value $F. On reset, they are $0." <-- ...? You mean #$FF and #$00, or #$0F and #$00?

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
That is really a huge compilation!

In the BRR-section, I think what you called 'Granulirity' should instead be called 'shift', because it defines how much the sample is shifted before output. Formula is: decoded sample = brr sample << shift.

Quote
Granulirity Nybbles produce dynamic range:

00 -00008 to 00007, in steps of 0001 01 -00016 to 00014, in steps of 0002 02 -00032 to 00028, in steps of 0004 03 -00064 to 00056, ...

The line is a bit overloaded. If you want to keep it, maybe put it into some kind of table?
With the table it definitely looks better.

Originally posted by https://dl.dropbox.com/u/29210231/SPC700.log
Higher shift values indicate SMALLER shifts in amplitude for the BRR nybbles in this block.

I don't get that sentence. Here it clearly states that higher shift amount causes higher amplitude. Your table also reflects that. So either remove that sentence or make it more clear. I suggest you include the formula (it's called 'shift' for a reason).

Also, for some instructions it's not exactly clear how they affect the flags. I have MUL/DIV in mind, which could deserve some additional explanation.

And finally, I'm sure it is only just a typo, XCN should be "A(7-4) <-> A(3-0)" instead of "A(7-1) <-> A(3-0)".
Originally posted by wiiqwertyuiop
Originally posted by Zentagon
Also, for some instructions it's not exactly clear how they affect the flags. I have MUL/DIV in mind, which could deserve some additional explanation.


I am not really sure how, MUL ,for example, affects the negative and zero flag, I already explained how each flag is affected, I don't see how it will be a problem.

Sorry, I might have been a bit vague.

Here it says that for MUL the N/Z-flags are only affected by Y (bits 15-8) of the result.
Also, for DIV I wonder what the meaning of V and H is. Overflow most likely means that the reults doesn't fit into A. But then I wonder what value gets stored into A instead? The lower 8 bits of the result or maybe zero?

Anyway it's just an unimportant detail, so I'd understand if you didn't care.

Also thanks for taking my other suggestion. It's less confusing now.