git://git.gir.st
/
Chiptunes.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
new version
[Chiptunes.git]
/
foo.c
diff --git
a/foo.c
b/foo.c
index 8c1e45a4140aa4d1e3d8b374edc67a619aaed5bc..c8eacfffa85f8c2a74a08e5298305192b0542924 100644
(file)
--- a/
foo.c
+++ b/
foo.c
@@
-24,7
+24,7
@@
void g(void) {
SUBI (t, -8)
skip:
t = data[t];
SUBI (t, -8)
skip:
t = data[t];
- t = ((
i3<<24|i2<<16|i1
<<8|i0)*t) >> o;
+ t = ((
(i1&0x1f)
<<8|i0)*t) >> o;
AND (t, x)
ANDI (t, 3)
RET
AND (t, x)
ANDI (t, 3)
RET
@@
-47,12
+47,14
@@
int main(void) {
LSR (tmp)
OR (n, tmp)
#undef tmp
LSR (tmp)
OR (n, tmp)
#undef tmp
- #define tmp acc
MOV (s, i3)
ROR (s)
ROR (s)
ANDI (s, 0x80)
MOV (s, i3)
ROR (s)
ROR (s)
ANDI (s, 0x80)
- s = (s | i2>>1);
+ #define tmp acc
+ MOV (tmp, i2)
+ LSR (tmp)
+ OR (s, tmp)
#undef tmp
//voice 1:
#undef tmp
//voice 1:
@@
-81,15
+83,27
@@
int main(void) {
ADD (acc, t)
//voice 3:
ADD (acc, t)
//voice 3:
- x = s / 3;
- t = n + ((i3<<13 | i2<<5 | i1>>3) % 3);
+ MOV (x, s)
+ INC (x)
+ #define tmp o
+ x = (x*0x55)>>8;
+ #undef tmp
+ t = ((i3&0x01)<<13 | i2<<5 | i1>>3) % 3;
+ ADD (t, n)
LDI (o, 10)
RCALL g();
ADD (acc, t)
//voice 4:
LDI (o, 10)
RCALL g();
ADD (acc, t)
//voice 4:
- x = s / 5;
- t = 8 + n - ((i3<<14 | i2<<6 | i1>>2) % 3);
+ MOV (x, s)
+ INC (x)
+ #define tmp o
+ x = (x*0x33)>>8;
+ #undef tmp
+ t = ((i3&0x01)<<14 | i2<<6 | i1>>2) % 3;
+ SUB (t, n)
+ NEG (t)
+ SUBI (t, -8)
LDI (o, 9)
RCALL g();
ADD (acc, t)
LDI (o, 9)
RCALL g();
ADD (acc, t)