Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Endianess #9

Open
wants to merge 62 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
c1c5997
first Amiga Version. fixed endianess in wave-header
githubaf Nov 20, 2018
3d6717b
Program works also with SDL, i.e. direct sound otput
githubaf Nov 20, 2018
dc4931b
use an SDL-to-portaudio wrapper instead of libsdl. The executable is …
githubaf Nov 22, 2018
e7f99e5
added -ahi to main menu. Does not work yet.
githubaf Nov 22, 2018
62066aa
renamed ahi-Audio task
githubaf Nov 22, 2018
72f54c0
added a few statics to arryays to save stack. It needs arounf 1000Byt…
githubaf Nov 22, 2018
a7ba6f8
turn LP-Filter off for audio.device, convert U8-Samples for ahi.device
githubaf Nov 23, 2018
c941cab
avoid hiss at the end of sound playback by clearing buffer
githubaf Nov 23, 2018
3785767
fixed u8 to i8 sample conversion for AHI
githubaf Nov 23, 2018
8d321f4
commented debug-prints to the serial console
githubaf Nov 23, 2018
01ec2bb
added toolchain version info to executable
githubaf Nov 23, 2018
3384b9f
fixed enforcerhit (double close of sound task), removed debug-getchar()
githubaf Nov 23, 2018
4a785c8
speed results
githubaf Nov 25, 2018
c1b22ba
added amiga_version.c, extended .gitignore
githubaf Nov 25, 2018
c009205
benchmarking Results with different optimizations and with and withou…
githubaf Nov 25, 2018
438c69a
profiling tests
githubaf Nov 26, 2018
8bfe42d
playing with the profiler
githubaf Dec 4, 2018
8b6f7fe
use old RenderTabs.h and render.c again because they are much faster
githubaf Dec 4, 2018
a647d27
us a local copy of bufferpos in Output() gives big speedup. 30s -> 13…
githubaf Dec 5, 2018
fd672bd
use a local buffer pointer in Output(). Speedup 13s -> 11..12s
githubaf Dec 5, 2018
9f29994
added missing consts
githubaf Dec 7, 2018
020abb5
fixed CTRL-C Enforcer-Hit, added more CTRL-C checking. Newer compiler.
githubaf Dec 7, 2018
37342b8
added amiga demos
githubaf Dec 11, 2018
e3c3ca6
compile all with -Os but render.c with -Os. Use -msmall-code
githubaf Dec 11, 2018
69f2c6e
removed debug-code from portaudio, audiotask must be __saveds for -fb…
githubaf Dec 11, 2018
e428c34
portaudion-ahi still wanted chip-mem. fixed. removed timer-debug-stuf…
githubaf Dec 11, 2018
bb8b386
68000/68020 aware Render() and RenderSample(), guess_number.rexx
githubaf Dec 14, 2018
17a56e8
forget to add render2.c (containing the 68000/68020 specific functions)
githubaf Dec 14, 2018
25a6e19
program can now be made resident
githubaf Dec 16, 2018
9eabca9
guess_number speaks full numbers now (68 instead of 6 8). freopen() r…
githubaf Dec 17, 2018
b1c8591
removed timimg-prints via define, mentioned resident in readme
githubaf Dec 17, 2018
8467db8
removed last attribut no_instrument statements, new compiler
githubaf Dec 19, 2018
43b4456
added stopwatch
githubaf Dec 21, 2018
3dda249
inline Output. timeTable[5][8] : 12.3 seconds -> 10.7 seconds
githubaf Dec 21, 2018
98a7fd1
speed up by inline asm div by 50 in OutPut -> 10,09 Seconds
githubaf Dec 21, 2018
9c030a2
-O2
githubaf Dec 21, 2018
33089a8
free Stopwatch at the end again (close timerdevice)
githubaf Dec 21, 2018
3e25982
speed up Output() by avoiding division by 50. Crash, if compiled resi…
githubaf Dec 22, 2018
91455e7
fixed readme
githubaf Dec 22, 2018
6148e60
327U fuer laengere Texte. kein -msmall-code im Moment.
githubaf Dec 22, 2018
8cfa97c
new compiler fixes -msmall-code issues
githubaf Dec 27, 2018
7f8215d
Aminet Release 1.1
githubaf Dec 28, 2018
0f097fe
removes const from sinus und rectangle (comment from Gunther Nikl)
githubaf Dec 29, 2018
91cb3f5
experimenting in Mailefile.amiga
githubaf Dec 30, 2018
423d121
newer Compiler
githubaf Feb 19, 2019
b259fcb
coverage als Malefile.amiga-target. Test auch gcno-Files noch nicht g…
githubaf Feb 20, 2019
d9bfd05
coverage-target checks that exactly 15 gcno-Files are created.
githubaf Feb 25, 2019
e83f96e
improved coverage target. colored output. better error checking. Newe…
githubaf Feb 26, 2019
a2ad5da
readme
githubaf Mar 1, 2019
46af713
Changed to COMPILER_INSTALL_DIR ?= ... as suggested by bebbo
githubaf Mar 7, 2019
8fe0153
use newest compiler. coverage test passes again.
githubaf Mar 13, 2019
f3e9980
tested new compilers
githubaf Mar 18, 2019
406c266
neuer compiler
githubaf Mar 22, 2019
931d381
new compiler
githubaf Mar 25, 2019
b40e508
use Compiler from 29.4.19. Works again.
githubaf Apr 29, 2019
7c4354b
Compiler from 1. May
githubaf May 2, 2019
2c0d05d
new compiler
githubaf May 20, 2019
9222774
new compiler
githubaf May 27, 2019
5488cdb
new Compiler 30.Juni 2019
githubaf Jul 1, 2019
1887b8b
new compiler
githubaf Aug 12, 2019
00eaefd
added make-target for profiling-test.
githubaf Aug 15, 2019
c70fff7
new compiler, coverage-test
githubaf Aug 22, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
.DS_Store
*.o
/sam
*.gcno
*.gcda
*.wav
*.html
*.lha
*.map
render000.c
render020.c

231 changes: 231 additions & 0 deletions AF_readme
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
18.11.2018
----------
sudo apt-get install libsdl1.2-dev
make

sdl-config ist ein Programm, das die Parameter ausgibt, die dann im Makefile benutzt werden.

sdl-config --cflags
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT

sdl-config --libs
-L/usr/lib/x86_64-linux-gnu -lSDL

./sam -wav sam.wav My name is sam.
play sam.wav

oder direkt

./sam My name is sam.


Amiga
-----
Im Makefile erst mal das SDL-Zeug auskommentieren. -noixemul bei Compiler- und Linker-Flags! (newlib hat falsches argc !???)
make CC=~/opt/m68k-amigaos_24Oct18/bin/m68k-amigaos-gcc

Das erzeugte Wav-File hat Endian-Fehler. Alles wird direkt geschrieben, ohne auf Endianes zu achten!

20.11.2018
----------
* eigenes Makefile fuer Amiga (wegen -noixemul un anderer SDL-Einstellungen)
* make CC=~/opt/m68k-amigaos_14Nov18/bin/m68k-amigaos-gcc -f Makefile.amiga

Fixed WriteWav() in main.c (changed endianess where necessary)
-> Amiga Executable works!

enabled SDL. -> Funktioniert!
ABER: sam wird viel groesser.

ohne SDL (gestripped) 44 kBytes
mit SDL (gestripped) 256 kBytes !

Der linkt alles moegliche ran, z.B. sind Youstick-Meldungen im Executable...

24.11.2018
----------
Inzwischen geht alles mit eigenem SDL->Portaudio-Wrapper.
CTRL-C Behandlung feht noch.

gcovr --object-directory=. -r . --html --html-details -o coverage.html

25.11.2018
----------
Auf nackten Amigas is SAM sehr langsam!

sam_old_render_O2 67564 ----rwed Heute 17:30:44
sam_Os 57576 ----rwed Heute 17:30:41
sam_O3 73528 ----rwed Heute 17:30:38
sam_old_render_Os 57760 ----rwed Heute 17:30:36
sam_O2 66800 ----rwed Heute 17:30:34

A2000
8.Ram Disk:> ; sam_Os 49
8.Ram Disk:> ; sam_O2 44
8.Ram Disk:> ; sam_O3 41
8.Ram Disk:> ; sam_old_render_Os 32
8.Ram Disk:> ; sam_old_render_O2 30
8.Ram Disk:> ; sam_old_render_O3 28
8.Ram Disk:> ;
8.Ram Disk:> ; sam_O2 Hello, my name is sam. 1 2 3 4 5 6 7 8 9 0
8.Ram Disk:>
8.Ram Disk:>

A1200, no FastMem
sam_Os 15s
sam_O2 14s
sam_O3 14s
sam_old_render_Os 10s
sam_old_render_O2 8s
sam_old_render_O3 8s

Die alte Renderfunktion mit multable und 4 Bit bekomme ich mit
git checkout 760786f13b79ddf5b519131925863181d224b839 src/RenderTabs.h
git checkout 760786f13b79ddf5b519131925863181d224b839 src/render.c


Profiling
,it -pg linken und uebersetzen
/home/osboxes/opt/m68k-amigaos_14Nov18/bin/m68k-amigaos-gprof sam | gprof2dot -n0 -e0 | dot -Tsvg -o output.svg
mirage output.svg &

4.Dec.2018
----------
Die alten Versionen von RenderTabs.h und render.c jetzt wieder hergestellt wie am 25.11. getestet.
Damit steigt die Geschwindigkeit deutlich an.

Neue Funktionen : 46 Sekunden
alte Funktionen : 30 Sekunden

Fuer
gprof test | gprof2dot -n0 -e0 | dot -Tpng -o output2.png && mirage output2.png
(gemessen ohne Soundausgabe oder Wave-File-schreiben, compiliert mit -O2, -pg und auf WinUAE Cycleexact A500 getestet)

5.Dec.2018
----------
In render.c gibt es mehrere Stellen, an denen BufferPos/50 berechnet wird. Bufferpos ist ein int. Das Dauert. Wenn ich testweise statt dessen Bufferpos >> 6 rechne, also /64, dann ist das Ergebnis zwar falsch, aber statt 30 Sekunden werden nur noch 10 Sekunden benoetigt!

8.12.2018
---------
-msmall-code saves a few bytes 2k oder so.
-fbaserel spart 8k oder so, das Programm wird aber langsamer 12..13 Sekunden statt 10..11 Sekunden.
-resident bekomme ich nur compiliert, wenn ich __ctypes.c patche. Sonst passiert sam: .text reloc for __ctype_ is out of range: 00000000
Aber auch mit patch stürzt das Programm immer ab.

10.12.2018
----------
Demos fuer Amiga angepasst. Neues Verzeichnis demos_amiga

11.12.2018
----------
Makefile geaendert. Alles ausser render.c wird mit -Os compiliert. rendr.c mit -O2. Alles mir -msamll-code.
SAM ist jetzt 59912 Bytes gross.

* Portaudio: debug-code entfern. (getMilliseconds(), File
* Audiotask muss __saveds sein, wenn mit -fbaserel uebersetzt wird.
* Programm ist nicht GPL, entsprechenden Header in meinen Audiofiles entfernt.

14.12.2018
----------
Render() und RenderSample() gibt es jetzt als 68000 und 68020 Version, die automatisch ausgewaehlt werden. guess_number.rexx gemacht. Portaudio warnings behoben.

16.12.2018
----------
Resident geht jetzt. Vorschlag von Bebbo zum Weitergeben von A4 ueber np_Input bzw pr_CIS gemacht

21.12.2018
----------
Stopwatch fuer genauere Zeitmessung

inline von Output() bringt 1,4 Sekunden bei Hello, my name is sam. 1 2 3 4 5 6 7 8 9 0
timeTable[5][8] bringt nochmal 0,13 Sekunden

-> 10,77 Sekunden

ASM-inline fuer SDivMod32 in OutPut 10,77 -> 10,09 Sekunden

22.Dec.2018
-----------
*327>>14, also *327/16384 statt durch 50 in Output(). Jetzt ca 7,74 Skunden! Deutlich besser als die ASM Variante.
-resident stuerzt ab, wenn mit meinem Debug-Define compiliert wird. Wird da was zu gross? Fehler im Compiler?
- Es scheint nicht resident zu sein, sondern -msmall-code, was zum Absturz fuehrt.
- 327U i der Multiplikation, sonst stuerzt sam bei langen Texten ab.
- Test fuer Linux und Amiga: sam Hello, my name is sam. 1 2 3 4 5 6 7 8 9 0 0 9 8 7 6 5 4 3 2 1
Damit dann auch nochmal A1200 testen und dort ev fiv lassen? Dort ev anders optimieren?

27.Dec.2018
-----------
Der Code enthaelt viele globale Variablen, die ev. die Optimierung beeintraechtigen?

Alle globalen Variablen finden

~/opt/m68k-amigaos_23Dec18/bin/m68k-amigaos-gdb sam
info variables

Dann die C-Files finden, in denen dieses Variablen benutzt werden. Manche koenen vielleicht zu lokalen Variablen gemacht werden.
z.B. finde alle Verwendungen von mem39 finden

find src -name "*.c" -exec grep -nH "mem39[^(0-9)]" {} \;


28.Dec.28
---------
WinUAE
A1200 ohne FastRam: 1111ms (1286ms bei 68000-code)
A1200 mit FastRam: 423ms (474ms bei 68000-code)
Die 68020-Erkennung bringt also nicht wirklich viel...

A500 ohne FastRam: 7572ms
A500 mit FastRam: 7569ms
Beim A500 spielt FastRam also keine Rolle.

Sam Groesse: 49900 Bytes

Aminet:
;http://aminet.net/util/arc/lha.run ; lha genommen: LhA 2.15 68000+ Jan 3 2011
wget http://aminet.net/util/arc/lha.run

in WinUAE:
protect demos_amiga/#? +s
protect sam +p
lha_68k a sam.lha sam sam.readme README.md
lha_68k a sam.lha demos_amiga/#? -r

in Linux:
ftp -p # -p passive mode, falls ftp durch NAT
open main.aminet.net
Name (main.aminet.net:developer): anonymous
Password: [email protected]
cd new
pwd
put sam.lha
put sam.readme # keine Verzeichnisse! also nicht z.B. amiga/espeak.readme!
quit

Aminet Release 1.1

29.Dec.2018
-----------
Kommentar von Gunther Nikl:
Anbei noch ein Patch für render2.c: Dort importierst Du sinus und
rectangle als "const". Diese sind in RenderTabs.h aber OHNE const
angelegt.

--> const aus render2.c rausgenommen. 32 Bytes kleineres Programm.
Compiler vom 28.12.18 genommen.


1.Mar.2019
----------
Der gcc kann jetzt auch mit
make update
make v date=2019-02-18
make all PREFIX=/here/or/there

aufgerufen werden. dann wird (in alle Projekten) )ausgechecked, was am 18.Feb.2019 gueltig war. (auch, wenn es z.B. am 12.Jan. das letzte checkin/push gab)


15.Aug.2019
-----------
Neues Target fuer Profiling. Der Linker hat gemeckert doppelte definitionen angemeckert. Anscheinend wird beim Profiling eine Variable mit dem Quellfilenamen angelegt. Bei uns wurde zwei mal render2.c benutz (fuer 68000 und 68020), damit gab es die Variable wohl doppelt. Deshalb kopiert das Makefile jetzt render2.c nach render000.c und render020.c und compiliert diese beiden temporaeren Quellen. Sie werden anschliessend geloescht. In .gitignore sind sie auch eingetragen.

2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
OBJS = reciter.o sam.o render.o main.o debug.o
OBJS = reciter.o sam.o render.o main.o debug.o endian.o

CC = gcc

Expand Down
Loading