From a34fb794c6b9299fadc30307a3a8069a8c6fe466 Mon Sep 17 00:00:00 2001 From: Dimitris Panokostas Date: Tue, 9 Jan 2018 22:59:22 +0100 Subject: [PATCH] Updated VisualGDB solution and projects to include Dispmanx target, genblitter, genlinetoscr projects --- .../Amiberry-sdl1-Debug.vgdbsettings | 36 +++- .../Amiberry-sdl1-Release.vgdbsettings | 41 +++- ...erry-sdl1-Release.vgdbsettings.midwan.user | 17 ++ VisualGDB/Amiberry-sdl1/Amiberry-sdl1.vcxproj | 9 +- .../Amiberry-sdl1.vcxproj.filters | 3 + .../Amiberry-Debug-dispmanx.vgdbsettings | 195 ++++++++++++++++++ ...ry-Debug-dispmanx.vgdbsettings.midwan.user | 17 ++ .../Amiberry/Amiberry-Debug.vgdbsettings | 1 - VisualGDB/Amiberry/Amiberry.sln | 25 ++- VisualGDB/Amiberry/Amiberry.vcxproj | 31 ++- VisualGDB/Amiberry/Amiberry.vcxproj.filters | 3 + VisualGDB/Amiberry/VisualGDB/Debug/genblitter | Bin 0 -> 30736 bytes .../Amiberry/VisualGDB/Debug/genlinetoscr | Bin 0 -> 79996 bytes VisualGDB/genblitter/Readme.txt | 17 ++ .../genblitter/genblitter-Debug.vgdbsettings | 169 +++++++++++++++ .../genblitter-Release.vgdbsettings | 142 +++++++++++++ VisualGDB/genblitter/genblitter.vcxproj | 75 +++++++ .../genblitter/genblitter.vcxproj.filters | 40 ++++ VisualGDB/genblitter/genblitter.vcxproj.user | 4 + VisualGDB/genlinetoscr/Readme.txt | 7 + .../genlinetoscr-Debug.vgdbsettings | 169 +++++++++++++++ .../genlinetoscr-Release.vgdbsettings | 142 +++++++++++++ VisualGDB/genlinetoscr/genlinetoscr.vcxproj | 74 +++++++ .../genlinetoscr/genlinetoscr.vcxproj.filters | 37 ++++ .../genlinetoscr/genlinetoscr.vcxproj.user | 4 + src/osdep/arm_helper.s | 97 +++++++++ 26 files changed, 1337 insertions(+), 18 deletions(-) create mode 100644 VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Release.vgdbsettings.midwan.user create mode 100644 VisualGDB/Amiberry/Amiberry-Debug-dispmanx.vgdbsettings create mode 100644 VisualGDB/Amiberry/Amiberry-Debug-dispmanx.vgdbsettings.midwan.user create mode 100644 VisualGDB/Amiberry/VisualGDB/Debug/genblitter create mode 100644 VisualGDB/Amiberry/VisualGDB/Debug/genlinetoscr create mode 100644 VisualGDB/genblitter/Readme.txt create mode 100644 VisualGDB/genblitter/genblitter-Debug.vgdbsettings create mode 100644 VisualGDB/genblitter/genblitter-Release.vgdbsettings create mode 100644 VisualGDB/genblitter/genblitter.vcxproj create mode 100644 VisualGDB/genblitter/genblitter.vcxproj.filters create mode 100644 VisualGDB/genblitter/genblitter.vcxproj.user create mode 100644 VisualGDB/genlinetoscr/Readme.txt create mode 100644 VisualGDB/genlinetoscr/genlinetoscr-Debug.vgdbsettings create mode 100644 VisualGDB/genlinetoscr/genlinetoscr-Release.vgdbsettings create mode 100644 VisualGDB/genlinetoscr/genlinetoscr.vcxproj create mode 100644 VisualGDB/genlinetoscr/genlinetoscr.vcxproj.filters create mode 100644 VisualGDB/genlinetoscr/genlinetoscr.vcxproj.user create mode 100644 src/osdep/arm_helper.s diff --git a/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Debug.vgdbsettings b/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Debug.vgdbsettings index 22338584..04bc4ab8 100644 --- a/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Debug.vgdbsettings +++ b/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Debug.vgdbsettings @@ -6,11 +6,39 @@ MinGWUnixSlash + + None + - 192.168.1.189 + 192.168.1.121 SSH pi + + false + + None + + $(ProjectDir) + /tmp/VisualGDB/$(ProjectDirUnixStyle) + + *.cpp + *.h + *.hpp + *.c + *.cc + *.cxx + *.mak + Makefile + *.txt + *.cmake + + true + true + + false + true + false false false @@ -22,9 +50,9 @@ com.visualgdb.raspberry_pi - 6.3.0 - 7.12 - 1 + 4.9.2 + 7.7.1 + 4 Amiberry-sdl1.vcxproj diff --git a/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Release.vgdbsettings b/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Release.vgdbsettings index 2392ac09..54a155ef 100644 --- a/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Release.vgdbsettings +++ b/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Release.vgdbsettings @@ -6,11 +6,39 @@ MinGWUnixSlash + + None + - 192.168.1.189 + 192.168.1.121 SSH pi + + false + + None + + $(ProjectDir) + /tmp/VisualGDB/$(ProjectDirUnixStyle) + + *.cpp + *.h + *.hpp + *.c + *.cc + *.cxx + *.mak + Makefile + *.txt + *.cmake + + true + true + + false + true + false false false @@ -22,9 +50,9 @@ com.visualgdb.raspberry_pi - 6.3.0 - 7.12 - 1 + 4.9.2 + 7.7.1 + 4 Amiberry-sdl1.vcxproj @@ -73,10 +101,11 @@ false /home/pi/projects/amiberry/$(TargetFileName) - Local + Remote false - false + true Auto + true false diff --git a/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Release.vgdbsettings.midwan.user b/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Release.vgdbsettings.midwan.user new file mode 100644 index 00000000..be8d5823 --- /dev/null +++ b/VisualGDB/Amiberry-sdl1/Amiberry-sdl1-Release.vgdbsettings.midwan.user @@ -0,0 +1,17 @@ + + + + + + false + false + false + false + false + false + + + false + + + \ No newline at end of file diff --git a/VisualGDB/Amiberry-sdl1/Amiberry-sdl1.vcxproj b/VisualGDB/Amiberry-sdl1/Amiberry-sdl1.vcxproj index 7cd09e9f..87540838 100644 --- a/VisualGDB/Amiberry-sdl1/Amiberry-sdl1.vcxproj +++ b/VisualGDB/Amiberry-sdl1/Amiberry-sdl1.vcxproj @@ -28,17 +28,17 @@ Debug com.visualgdb.raspberry_pi - 6.3.0/7.12/r1 + 4.9.2/7.7.1/r4 com.visualgdb.raspberry_pi - 6.3.0/7.12/r1 + 4.9.2/7.7.1/r4 GNUPP14 =/usr/include/SDL;=/opt/vc/include;=/opt/vc/include/interface/vmcs_host/linux;=/opt/vc/include/interface/vcos/pthreads;=/usr/include/libxml2;../../src;../../src/osdep;../../src/threaddep;../../src/include;../../src/archivers;%(ClCompile.AdditionalIncludeDirectories) - DEBUG=1;ARMV6T2;USE_ARMNEON;_REENTRANT;AMIBERRY;CPU_arm;ARMV6_ASSEMBLY;USE_SDL1;%(ClCompile.PreprocessorDefinitions) + DEBUG=1;ARMV6T2;USE_ARMNEON;_REENTRANT;AMIBERRY;CPU_arm;ARMV6_ASSEMBLY;USE_SDL1;USE_DISPMANX;%(ClCompile.PreprocessorDefinitions) -march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard %(AdditionalOptions) @@ -52,7 +52,7 @@ GNUPP14 =/usr/include/SDL;=/opt/vc/include;=/opt/vc/include/interface/vmcs_host/linux;=/opt/vc/include/interface/vcos/pthreads;=/usr/include/libxml2;../../src;../../src/osdep;../../src/threaddep;../../src/include;../../src/archivers;%(ClCompile.AdditionalIncludeDirectories) - NDEBUG=1;RELEASE=1;ARMV6T2;USE_ARMNEON;_REENTRANT;AMIBERRY;CPU_arm;ARMV6_ASSEMBLY;USE_SDL1;%(ClCompile.PreprocessorDefinitions) + NDEBUG=1;RELEASE=1;ARMV6T2;USE_ARMNEON;_REENTRANT;AMIBERRY;CPU_arm;ARMV6_ASSEMBLY;USE_SDL1;USE_DISPMANX;%(ClCompile.PreprocessorDefinitions) -march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard %(AdditionalOptions) @@ -335,6 +335,7 @@ + diff --git a/VisualGDB/Amiberry-sdl1/Amiberry-sdl1.vcxproj.filters b/VisualGDB/Amiberry-sdl1/Amiberry-sdl1.vcxproj.filters index 1a96d473..a695db3a 100644 --- a/VisualGDB/Amiberry-sdl1/Amiberry-sdl1.vcxproj.filters +++ b/VisualGDB/Amiberry-sdl1/Amiberry-sdl1.vcxproj.filters @@ -1022,5 +1022,8 @@ Source files\archivers\7z + + Source files\osdep\gui + \ No newline at end of file diff --git a/VisualGDB/Amiberry/Amiberry-Debug-dispmanx.vgdbsettings b/VisualGDB/Amiberry/Amiberry-Debug-dispmanx.vgdbsettings new file mode 100644 index 00000000..6f745d46 --- /dev/null +++ b/VisualGDB/Amiberry/Amiberry-Debug-dispmanx.vgdbsettings @@ -0,0 +1,195 @@ + + + Debug-dispmanx + + + + MinGWUnixSlash + + + None + + + 192.168.1.121 + SSH + pi + + + false + + None + + $(ProjectDir) + /tmp/VisualGDB/$(ProjectDirUnixStyle) + + *.cpp + *.h + *.hpp + *.c + *.cc + *.cxx + *.mak + Makefile + *.txt + *.cmake + + true + true + + false + true + + false + false + false + false + false + $(ProjectDir) + + + + com.visualgdb.raspberry_pi + + 6.3.0 + 7.12 + 1 + + + Amiberry.vcxproj + + + + + 1 + true + + + + + + false + true + true + true + true + true + true + true + true + + false + false + false + false + false + false + true + false + None + false + false + main + true + false + true + false + 0 + + + $(TargetPath) + 2000 + + + false + /home/pi/projects/amiberry/$(TargetFileName) + Remote + false + false + Auto + /usr/local/lib + true + false + + + + + + + + + + + + + Default + + + + true + + + + + False + + + + + true + false + + Enabled + true + true + true + + + + + + true + + core.builtin.BuiltinFunctions + core.builtin.NoReturnFunctions + core.CallAndMessage + core.DivideZero + core.DynamicTypePropagation + core.NonNullParamChecker + core.NullDereference + core.StackAddressEscape + core.UndefinedBinaryOperatorResult + core.uninitialized.ArraySubscript + core.uninitialized.Assign + core.uninitialized.Branch + core.uninitialized.CapturedBlockVariable + core.uninitialized.UndefReturn + core.VLASize + cplusplus.NewDelete + cplusplus.NewDeleteLeaks + deadcode.DeadStores + nullability.NullPassedToNonnull + nullability.NullReturnedFromNonnull + security.insecureAPI.getpw + security.insecureAPI.gets + security.insecureAPI.mkstemp + security.insecureAPI.mktemp + security.insecureAPI.UncheckedReturn + security.insecureAPI.vfork + unix.API + unix.cstring.BadSizeArg + unix.cstring.NullArg + unix.Malloc + unix.MallocSizeof + unix.MismatchedDeallocator + unix.Vfork + + + -analyzer-store=region + -analyzer-opt-analyze-nested-blocks + -analyzer-eagerly-assume + + + + VisualGDB\VisualGDBCache + + \ No newline at end of file diff --git a/VisualGDB/Amiberry/Amiberry-Debug-dispmanx.vgdbsettings.midwan.user b/VisualGDB/Amiberry/Amiberry-Debug-dispmanx.vgdbsettings.midwan.user new file mode 100644 index 00000000..be8d5823 --- /dev/null +++ b/VisualGDB/Amiberry/Amiberry-Debug-dispmanx.vgdbsettings.midwan.user @@ -0,0 +1,17 @@ + + + + + + false + false + false + false + false + false + + + false + + + \ No newline at end of file diff --git a/VisualGDB/Amiberry/Amiberry-Debug.vgdbsettings b/VisualGDB/Amiberry/Amiberry-Debug.vgdbsettings index 576fba97..e5f46b90 100644 --- a/VisualGDB/Amiberry/Amiberry-Debug.vgdbsettings +++ b/VisualGDB/Amiberry/Amiberry-Debug.vgdbsettings @@ -58,7 +58,6 @@ Amiberry.vcxproj - 1 true diff --git a/VisualGDB/Amiberry/Amiberry.sln b/VisualGDB/Amiberry/Amiberry.sln index 0c658228..7f99d09f 100644 --- a/VisualGDB/Amiberry/Amiberry.sln +++ b/VisualGDB/Amiberry/Amiberry.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.27004.2010 +VisualStudioVersion = 15.0.27130.2010 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Amiberry", "Amiberry.vcxproj", "{FDC6BF55-C4BC-44FB-85A9-3369784716E8}" ProjectSection(ProjectDependencies) = postProject @@ -12,24 +12,47 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "guisan", "..\guisan\guisan. EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Amiberry-sdl1", "..\Amiberry-sdl1\Amiberry-sdl1.vcxproj", "{14635D01-67B8-4863-9507-3FA5C8FB4B32}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genblitter", "..\genblitter\genblitter.vcxproj", "{619EFB8C-E41A-4058-B085-1B8CD22692DD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genlinetoscr", "..\genlinetoscr\genlinetoscr.vcxproj", "{883F2A00-8030-429B-AC7F-E930DDF9568F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|VisualGDB = Debug|VisualGDB + Debug-dispmanx|VisualGDB = Debug-dispmanx|VisualGDB Release|VisualGDB = Release|VisualGDB EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {FDC6BF55-C4BC-44FB-85A9-3369784716E8}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB {FDC6BF55-C4BC-44FB-85A9-3369784716E8}.Debug|VisualGDB.Build.0 = Debug|VisualGDB + {FDC6BF55-C4BC-44FB-85A9-3369784716E8}.Debug-dispmanx|VisualGDB.ActiveCfg = Debug-dispmanx|VisualGDB + {FDC6BF55-C4BC-44FB-85A9-3369784716E8}.Debug-dispmanx|VisualGDB.Build.0 = Debug-dispmanx|VisualGDB {FDC6BF55-C4BC-44FB-85A9-3369784716E8}.Release|VisualGDB.ActiveCfg = Release|VisualGDB {FDC6BF55-C4BC-44FB-85A9-3369784716E8}.Release|VisualGDB.Build.0 = Release|VisualGDB {E613050D-EE8C-4ED1-936D-EB9E0E155EA6}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB {E613050D-EE8C-4ED1-936D-EB9E0E155EA6}.Debug|VisualGDB.Build.0 = Debug|VisualGDB + {E613050D-EE8C-4ED1-936D-EB9E0E155EA6}.Debug-dispmanx|VisualGDB.ActiveCfg = Debug|VisualGDB + {E613050D-EE8C-4ED1-936D-EB9E0E155EA6}.Debug-dispmanx|VisualGDB.Build.0 = Debug|VisualGDB {E613050D-EE8C-4ED1-936D-EB9E0E155EA6}.Release|VisualGDB.ActiveCfg = Release|VisualGDB {E613050D-EE8C-4ED1-936D-EB9E0E155EA6}.Release|VisualGDB.Build.0 = Release|VisualGDB {14635D01-67B8-4863-9507-3FA5C8FB4B32}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB {14635D01-67B8-4863-9507-3FA5C8FB4B32}.Debug|VisualGDB.Build.0 = Debug|VisualGDB + {14635D01-67B8-4863-9507-3FA5C8FB4B32}.Debug-dispmanx|VisualGDB.ActiveCfg = Debug|VisualGDB + {14635D01-67B8-4863-9507-3FA5C8FB4B32}.Debug-dispmanx|VisualGDB.Build.0 = Debug|VisualGDB {14635D01-67B8-4863-9507-3FA5C8FB4B32}.Release|VisualGDB.ActiveCfg = Release|VisualGDB {14635D01-67B8-4863-9507-3FA5C8FB4B32}.Release|VisualGDB.Build.0 = Release|VisualGDB + {619EFB8C-E41A-4058-B085-1B8CD22692DD}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB + {619EFB8C-E41A-4058-B085-1B8CD22692DD}.Debug|VisualGDB.Build.0 = Debug|VisualGDB + {619EFB8C-E41A-4058-B085-1B8CD22692DD}.Debug-dispmanx|VisualGDB.ActiveCfg = Debug|VisualGDB + {619EFB8C-E41A-4058-B085-1B8CD22692DD}.Debug-dispmanx|VisualGDB.Build.0 = Debug|VisualGDB + {619EFB8C-E41A-4058-B085-1B8CD22692DD}.Release|VisualGDB.ActiveCfg = Release|VisualGDB + {619EFB8C-E41A-4058-B085-1B8CD22692DD}.Release|VisualGDB.Build.0 = Release|VisualGDB + {883F2A00-8030-429B-AC7F-E930DDF9568F}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB + {883F2A00-8030-429B-AC7F-E930DDF9568F}.Debug|VisualGDB.Build.0 = Debug|VisualGDB + {883F2A00-8030-429B-AC7F-E930DDF9568F}.Debug-dispmanx|VisualGDB.ActiveCfg = Debug|VisualGDB + {883F2A00-8030-429B-AC7F-E930DDF9568F}.Debug-dispmanx|VisualGDB.Build.0 = Debug|VisualGDB + {883F2A00-8030-429B-AC7F-E930DDF9568F}.Release|VisualGDB.ActiveCfg = Release|VisualGDB + {883F2A00-8030-429B-AC7F-E930DDF9568F}.Release|VisualGDB.Build.0 = Release|VisualGDB EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/VisualGDB/Amiberry/Amiberry.vcxproj b/VisualGDB/Amiberry/Amiberry.vcxproj index e60327a2..ed8cdccf 100644 --- a/VisualGDB/Amiberry/Amiberry.vcxproj +++ b/VisualGDB/Amiberry/Amiberry.vcxproj @@ -1,6 +1,10 @@  + + Debug-dispmanx + VisualGDB + Debug VisualGDB @@ -17,6 +21,7 @@ + @@ -31,6 +36,12 @@ 6.3.0/7.12/r1 $(ProjectName)-sdl2 + + Debug + com.visualgdb.raspberry_pi + 6.3.0/7.12/r1 + $(ProjectName)-sdl2 + com.visualgdb.raspberry_pi 6.3.0/7.12/r1 @@ -46,15 +57,30 @@ ;%(Link.AdditionalLinkerInputs) =/usr/local/lib;../../src/guisan/lib;%(Link.LibrarySearchDirectories) - SDL2;pthread;z;png;rt;xml2;FLAC;mpg123;dl;mpeg2convert;mpeg2;SDL2_image;SDL2_ttf;guisan;%(Link.AdditionalLibraryNames) + SDL2;pthread;z;png;rt;xml2;FLAC;mpg123;dl;mpeg2convert;mpeg2;SDL2_image;SDL2_ttf;guisan;m;%(Link.AdditionalLibraryNames) + + + GNUPP14 + =/usr/local/include/SDL2;=/usr/include/libxml2;../../src;../../src/osdep;../../src/threaddep;../../src/include;../../src/guisan/include;../../src/archivers;=/opt/vc/include;=/opt/vc/include/interface/vmcs_host/linux;=/opt/vc/include/interface/vcos/pthreads;%(ClCompile.AdditionalIncludeDirectories) + DEBUG=1;ARMV6T2;USE_ARMNEON;_REENTRANT;AMIBERRY;CPU_arm;ARMV6_ASSEMBLY;USE_SDL2;USE_DISPMANX;%(ClCompile.PreprocessorDefinitions) + -march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard %(AdditionalOptions) + + + ;%(Link.AdditionalLinkerInputs) + =/usr/local/lib;../../src/guisan/lib;=/opt/vc/lib;%(Link.LibrarySearchDirectories) + SDL2;pthread;z;png;rt;xml2;FLAC;mpg123;dl;mpeg2convert;mpeg2;SDL2_image;SDL2_ttf;guisan;bcm_host;%(Link.AdditionalLibraryNames) + + + + GNUPP14 =/usr/local/include/SDL2;=/usr/include/libxml2;../../src;../../src/osdep;../../src/threaddep;../../src/include;../../src/guisan/include;../../src/archivers;%(ClCompile.AdditionalIncludeDirectories) - NDEBUG=1;RELEASE=1;ARMV6T2;USE_ARMNEON;_REENTRANT;AMIBERRY;CPU_arm;ARMV6_ASSEMBLY;USE_SDL2;%(ClCompile.PreprocessorDefinitions) + NDEBUG=1;RELEASE=1;ARMV6T2;USE_ARMNEON;_REENTRANT;AMIBERRY;CPU_arm;ARMV6_ASSEMBLY;USE_SDL2;USE_DISPMANX;%(ClCompile.PreprocessorDefinitions) -march=armv8-a -mfpu=neon-fp-armv8 -mfloat-abi=hard %(AdditionalOptions) @@ -248,6 +274,7 @@ + diff --git a/VisualGDB/Amiberry/Amiberry.vcxproj.filters b/VisualGDB/Amiberry/Amiberry.vcxproj.filters index 661360c5..b470a3d5 100644 --- a/VisualGDB/Amiberry/Amiberry.vcxproj.filters +++ b/VisualGDB/Amiberry/Amiberry.vcxproj.filters @@ -77,6 +77,9 @@ Source files + + Source files + diff --git a/VisualGDB/Amiberry/VisualGDB/Debug/genblitter b/VisualGDB/Amiberry/VisualGDB/Debug/genblitter new file mode 100644 index 0000000000000000000000000000000000000000..50c352965cec7e5116e80516fe3d0b82eeb88897 GIT binary patch literal 30736 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 VsZjjzjhLsJey4!^tGK&1`~S;>XYv35 literal 0 HcmV?d00001 diff --git a/VisualGDB/Amiberry/VisualGDB/Debug/genlinetoscr b/VisualGDB/Amiberry/VisualGDB/Debug/genlinetoscr new file mode 100644 index 0000000000000000000000000000000000000000..5cbb50bafa024b34f90c0070c5b8498c4878773e GIT binary patch literal 79996 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 J)Jw+F{eM_I75o4I literal 0 HcmV?d00001 diff --git a/VisualGDB/genblitter/Readme.txt b/VisualGDB/genblitter/Readme.txt new file mode 100644 index 00000000..85dd819a --- /dev/null +++ b/VisualGDB/genblitter/Readme.txt @@ -0,0 +1,17 @@ +This tool generates the following files: +- blit.h +- blitfunc.cpp +- blitfunc.h +- blittable.cpp + +To use it, compile it for the target platform, then execute it there as follows: + +genblitter.exe i > blit.h + +genblitter.exe f > blitfunc.cpp + +genblitter.exe h > blitfunc.h + +genblitter.exe t > blittable.cpp + +Copy the resulting files back in the "src" directory of Amiberry \ No newline at end of file diff --git a/VisualGDB/genblitter/genblitter-Debug.vgdbsettings b/VisualGDB/genblitter/genblitter-Debug.vgdbsettings new file mode 100644 index 00000000..fb0eccc0 --- /dev/null +++ b/VisualGDB/genblitter/genblitter-Debug.vgdbsettings @@ -0,0 +1,169 @@ + + + Debug + + + + MinGWUnixSlash + + + 192.168.1.152 + SSH + pi + + false + false + false + false + false + $(ProjectDir) + + + + com.visualgdb.raspberry_pi + + 6.3.0 + 7.12 + 1 + + + + false + + C:\SysGCC\raspberry\bin + + false + + + MinGWUnixSlash + + Raspberry PI + com.visualgdb.raspberry_pi + C:\SysGCC\raspberry + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-gcc.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-g++.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-gdb.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-ar.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-objcopy.exe + C:\SysGCC\raspberry\bin\make.exe + false + + genblitter.vcxproj + + + + LANG + en_US.UTF-8 + + + PATH + C:\SysGCC\raspberry\bin;%PATH% + + + + + 1 + true + + + + + + false + false + false + false + false + false + false + false + false + + false + false + false + false + false + false + true + false + None + false + false + main + true + false + false + false + 0 + + + + + + LANG + en_US.UTF-8 + + + PATH + C:\SysGCC\raspberry\bin;%PATH% + + + + + $(TargetPath) + 2000 + + + false + /home/pi/projects//$(TargetFileName) + Local + false + false + Auto + true + false + + + + + + + + + + + + + Default + + + + true + + + + + False + + + + + true + false + + Enabled + true + true + true + + + + + + false + + + VisualGDB\VisualGDBCache + + \ No newline at end of file diff --git a/VisualGDB/genblitter/genblitter-Release.vgdbsettings b/VisualGDB/genblitter/genblitter-Release.vgdbsettings new file mode 100644 index 00000000..d05d7a56 --- /dev/null +++ b/VisualGDB/genblitter/genblitter-Release.vgdbsettings @@ -0,0 +1,142 @@ + + + Release + + + + MinGWUnixSlash + + + 192.168.1.152 + SSH + pi + + false + false + false + false + false + $(ProjectDir) + + + + Raspberry PI + com.visualgdb.raspberry_pi + C:\SysGCC\raspberry + false + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-gcc.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-g++.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-gdb.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-ar.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-objcopy.exe + C:\SysGCC\raspberry\bin\make.exe + + C:\SysGCC\raspberry\bin + + true + false + + + MinGWUnixSlash + + + genblitter.vcxproj + + + + LANG + en_US.UTF-8 + + + PATH + C:\SysGCC\raspberry\bin;%PATH% + + + + 1 + + + + + + false + false + false + false + false + false + false + false + false + + false + false + false + false + false + false + true + false + None + false + false + main + true + false + false + false + + + + + + LANG + en_US.UTF-8 + + + PATH + C:\SysGCC\raspberry\bin;%PATH% + + + + + $(TargetPath) + 2000 + + + false + /home/pi/projects//$(TargetFileName) + Local + false + false + Auto + true + false + + + + + + + + + + + + + Default + + + + true + + + + + Unknown + + true + + + VisualGDB\VisualGDBCache + \ No newline at end of file diff --git a/VisualGDB/genblitter/genblitter.vcxproj b/VisualGDB/genblitter/genblitter.vcxproj new file mode 100644 index 00000000..a1535f95 --- /dev/null +++ b/VisualGDB/genblitter/genblitter.vcxproj @@ -0,0 +1,75 @@ + + + + + Debug + VisualGDB + + + Release + VisualGDB + + + + 15.0 + {619EFB8C-E41A-4058-B085-1B8CD22692DD} + + + + + + + + + + Debug + C:\SysGCC\raspberry + com.visualgdb.raspberry_pi + 6.3.0/7.12/r1 + + + C:\SysGCC\raspberry + com.visualgdb.raspberry_pi + 6.3.0/7.12/r1 + + + + GNUPP14 + C:\SysGCC\raspberry\lib\gcc\arm-linux-gnueabihf\4.9\include;C:\SysGCC\raspberry\arm-linux-gnueabihf\include\c++\4.9;C:\SysGCC\raspberry\arm-linux-gnueabihf\include;C:\SysGCC\raspberry\arm-linux-gnueabihf\sysroot\usr\include;..\..\src\include;..\..\src;..\..\src\osdep;%(ClCompile.AdditionalIncludeDirectories) + DEBUG=1;%(ClCompile.PreprocessorDefinitions) + + + ;%(Link.AdditionalLinkerInputs) + ;%(Link.LibrarySearchDirectories) + ;%(Link.AdditionalLibraryNames) + + + + + + GNUPP14 + C:\SysGCC\raspberry\lib\gcc\arm-linux-gnueabihf\4.9\include;C:\SysGCC\raspberry\arm-linux-gnueabihf\include\c++\4.9;C:\SysGCC\raspberry\arm-linux-gnueabihf\include;C:\SysGCC\raspberry\arm-linux-gnueabihf\sysroot\usr\include;../../src/include;../../src;../../src/osdep;%(ClCompile.AdditionalIncludeDirectories) + NDEBUG=1;RELEASE=1;%(ClCompile.PreprocessorDefinitions) + + + ;%(Link.AdditionalLinkerInputs) + ;%(Link.LibrarySearchDirectories) + ;%(Link.AdditionalLibraryNames) + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualGDB/genblitter/genblitter.vcxproj.filters b/VisualGDB/genblitter/genblitter.vcxproj.filters new file mode 100644 index 00000000..fcb90c62 --- /dev/null +++ b/VisualGDB/genblitter/genblitter.vcxproj.filters @@ -0,0 +1,40 @@ + + + + + {afe8a49f-0586-4eea-b2ea-cc1c4567db36} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {4718ef87-4582-42a4-8469-11a35b5a4418} + h;hpp;hxx;hm;inl;inc;xsd + + + {e9ba1ae1-6dab-41af-8b75-7c41100a7fc9} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + {c7346196-4f74-4afd-aa85-9da2661c7ab7} + *.vgdbsettings + + + + + VisualGDB settings + + + VisualGDB settings + + + + + Source files + + + Source files + + + + + + \ No newline at end of file diff --git a/VisualGDB/genblitter/genblitter.vcxproj.user b/VisualGDB/genblitter/genblitter.vcxproj.user new file mode 100644 index 00000000..be250787 --- /dev/null +++ b/VisualGDB/genblitter/genblitter.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/VisualGDB/genlinetoscr/Readme.txt b/VisualGDB/genlinetoscr/Readme.txt new file mode 100644 index 00000000..ff2f6f3c --- /dev/null +++ b/VisualGDB/genlinetoscr/Readme.txt @@ -0,0 +1,7 @@ +This tool generates the "linetoscr.cpp" file. + +Compile it for the target system (e.g. Raspberry) then run it there as: + +genlinetoscr > linetoscr.cpp + +Copy the generated file back into the "src" directory. \ No newline at end of file diff --git a/VisualGDB/genlinetoscr/genlinetoscr-Debug.vgdbsettings b/VisualGDB/genlinetoscr/genlinetoscr-Debug.vgdbsettings new file mode 100644 index 00000000..cc9c078f --- /dev/null +++ b/VisualGDB/genlinetoscr/genlinetoscr-Debug.vgdbsettings @@ -0,0 +1,169 @@ + + + Debug + + + + MinGWUnixSlash + + + 192.168.1.152 + SSH + pi + + false + false + false + false + false + $(ProjectDir) + + + + com.visualgdb.raspberry_pi + + 6.3.0 + 7.12 + 1 + + + + false + + C:\SysGCC\raspberry\bin + + false + + + MinGWUnixSlash + + Raspberry PI + com.visualgdb.raspberry_pi + C:\SysGCC\raspberry + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-gcc.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-g++.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-gdb.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-ar.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-objcopy.exe + C:\SysGCC\raspberry\bin\make.exe + false + + genlinetoscr.vcxproj + + + + LANG + en_US.UTF-8 + + + PATH + C:\SysGCC\raspberry\bin;%PATH% + + + + + 1 + true + + + + + + false + false + false + false + false + false + false + false + false + + false + false + false + false + false + false + true + false + None + false + false + main + true + false + false + false + 0 + + + + + + LANG + en_US.UTF-8 + + + PATH + C:\SysGCC\raspberry\bin;%PATH% + + + + + $(TargetPath) + 2000 + + + false + /home/pi/projects//$(TargetFileName) + Local + false + false + Auto + true + false + + + + + + + + + + + + + Default + + + + true + + + + + False + + + + + true + false + + Enabled + true + true + true + + + + + + false + + + VisualGDB\VisualGDBCache + + \ No newline at end of file diff --git a/VisualGDB/genlinetoscr/genlinetoscr-Release.vgdbsettings b/VisualGDB/genlinetoscr/genlinetoscr-Release.vgdbsettings new file mode 100644 index 00000000..4427ede4 --- /dev/null +++ b/VisualGDB/genlinetoscr/genlinetoscr-Release.vgdbsettings @@ -0,0 +1,142 @@ + + + Release + + + + MinGWUnixSlash + + + 192.168.1.152 + SSH + pi + + false + false + false + false + false + $(ProjectDir) + + + + Raspberry PI + com.visualgdb.raspberry_pi + C:\SysGCC\raspberry + false + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-gcc.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-g++.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-gdb.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-ar.exe + C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-objcopy.exe + C:\SysGCC\raspberry\bin\make.exe + + C:\SysGCC\raspberry\bin + + true + false + + + MinGWUnixSlash + + + genlinetoscr.vcxproj + + + + LANG + en_US.UTF-8 + + + PATH + C:\SysGCC\raspberry\bin;%PATH% + + + + 1 + + + + + + false + false + false + false + false + false + false + false + false + + false + false + false + false + false + false + true + false + None + false + false + main + true + false + false + false + + + + + + LANG + en_US.UTF-8 + + + PATH + C:\SysGCC\raspberry\bin;%PATH% + + + + + $(TargetPath) + 2000 + + + false + /home/pi/projects//$(TargetFileName) + Local + false + false + Auto + true + false + + + + + + + + + + + + + Default + + + + true + + + + + Unknown + + true + + + VisualGDB\VisualGDBCache + \ No newline at end of file diff --git a/VisualGDB/genlinetoscr/genlinetoscr.vcxproj b/VisualGDB/genlinetoscr/genlinetoscr.vcxproj new file mode 100644 index 00000000..472bce97 --- /dev/null +++ b/VisualGDB/genlinetoscr/genlinetoscr.vcxproj @@ -0,0 +1,74 @@ + + + + + Debug + VisualGDB + + + Release + VisualGDB + + + + 15.0 + {883F2A00-8030-429B-AC7F-E930DDF9568F} + + + + + + + + + + Debug + C:\SysGCC\raspberry + com.visualgdb.raspberry_pi + 6.3.0/7.12/r1 + + + C:\SysGCC\raspberry + com.visualgdb.raspberry_pi + 6.3.0/7.12/r1 + + + + GNUPP14 + C:\SysGCC\raspberry\lib\gcc\arm-linux-gnueabihf\4.9\include;C:\SysGCC\raspberry\arm-linux-gnueabihf\include\c++\4.9;C:\SysGCC\raspberry\arm-linux-gnueabihf\include;C:\SysGCC\raspberry\arm-linux-gnueabihf\sysroot\usr\include;../../src/include;../../src;../../src/osdep;%(ClCompile.AdditionalIncludeDirectories) + DEBUG=1;%(ClCompile.PreprocessorDefinitions) + + + ;%(Link.AdditionalLinkerInputs) + ;%(Link.LibrarySearchDirectories) + ;%(Link.AdditionalLibraryNames) + + + + + + GNUPP14 + C:\SysGCC\raspberry\lib\gcc\arm-linux-gnueabihf\4.9\include;C:\SysGCC\raspberry\arm-linux-gnueabihf\include\c++\4.9;C:\SysGCC\raspberry\arm-linux-gnueabihf\include;C:\SysGCC\raspberry\arm-linux-gnueabihf\sysroot\usr\include;../../src/include;../../src;../../src/osdep;%(ClCompile.AdditionalIncludeDirectories) + NDEBUG=1;RELEASE=1;%(ClCompile.PreprocessorDefinitions) + + + ;%(Link.AdditionalLinkerInputs) + ;%(Link.LibrarySearchDirectories) + ;%(Link.AdditionalLibraryNames) + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualGDB/genlinetoscr/genlinetoscr.vcxproj.filters b/VisualGDB/genlinetoscr/genlinetoscr.vcxproj.filters new file mode 100644 index 00000000..dc1e79f8 --- /dev/null +++ b/VisualGDB/genlinetoscr/genlinetoscr.vcxproj.filters @@ -0,0 +1,37 @@ + + + + + {19e139ec-d402-45d4-89fc-39f22443a95b} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {0a02e0a2-214b-4e9e-a7c5-0668ebf38e34} + h;hpp;hxx;hm;inl;inc;xsd + + + {30f92ef0-a24c-49e2-9e92-906dcef4d050} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + {20bde34c-9e8e-42ee-83c1-c8c8143c7516} + *.vgdbsettings + + + + + VisualGDB settings + + + VisualGDB settings + + + + + Source files + + + + + + \ No newline at end of file diff --git a/VisualGDB/genlinetoscr/genlinetoscr.vcxproj.user b/VisualGDB/genlinetoscr/genlinetoscr.vcxproj.user new file mode 100644 index 00000000..be250787 --- /dev/null +++ b/VisualGDB/genlinetoscr/genlinetoscr.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/osdep/arm_helper.s b/src/osdep/arm_helper.s new file mode 100644 index 00000000..c1387345 --- /dev/null +++ b/src/osdep/arm_helper.s @@ -0,0 +1,97 @@ +@ Some functions and tests to increase performance in drawing.cpp and custom.cpp + +.arm + +.global copy_screen_8bit +.global copy_screen_16bit_swap +.global copy_screen_32bit_to_16bit + +.text + +.align 8 + + +@---------------------------------------------------------------- +@ copy_screen_8bit +@ +@ r0: uae_u8 *dst +@ r1: uae_u8 *src +@ r2: int bytes always a multiple of 64: even number of lines, number of pixel per line is multiple of 32 (320, 640, 800, 1024, 1152, 1280) +@ r3: uae_u32 *clut +@ +@ void copy_screen_8bit(uae_u8 *dst, uae_u8 *src, int bytes, uae_u32 *clut); +@ +@---------------------------------------------------------------- +copy_screen_8bit: + stmdb sp!, {r4-r6, lr} +copy_screen_8bit_loop: + pld [r1, #192] + mov lr, #64 +copy_screen_8bit_loop_2: + ldr r4, [r1], #4 + and r5, r4, #255 + ldr r6, [r3, r5, lsl #2] + lsr r5, r4, #8 + and r5, r5, #255 + strh r6, [r0], #2 + ldr r6, [r3, r5, lsl #2] + lsr r5, r4, #16 + and r5, r5, #255 + strh r6, [r0], #2 + ldr r6, [r3, r5, lsl #2] + lsr r5, r4, #24 + strh r6, [r0], #2 + ldr r6, [r3, r5, lsl #2] + subs lr, lr, #4 + strh r6, [r0], #2 + bgt copy_screen_8bit_loop_2 + subs r2, r2, #64 + bgt copy_screen_8bit_loop + ldmia sp!, {r4-r6, pc} + + +@---------------------------------------------------------------- +@ copy_screen_16bit_swap +@ +@ r0: uae_u8 *dst +@ r1: uae_u8 *src +@ r2: int bytes always a multiple of 128: even number of lines, 2 bytes per pixel, number of pixel per line is multiple of 32 (320, 640, 800, 1024, 1152, 1280) +@ +@ void copy_screen_16bit_swap(uae_u8 *dst, uae_u8 *src, int bytes); +@ +@---------------------------------------------------------------- +copy_screen_16bit_swap: +ldr r3, [r1], #4 +rev16 r3, r3 +str r3, [r0], #4 +subs r2, r2, #4 +bne copy_screen_16bit_swap +bx lr + + +@---------------------------------------------------------------- +@ copy_screen_32bit_to_16bit +@ +@ r0: uae_u8 *dst - Format (bits): rrrr rggg gggb bbbb +@ r1: uae_u8 *src - Format (bytes) in memory rgba +@ r2: int bytes +@ +@ void copy_screen_32bit_to_16bit(uae_u8 *dst, uae_u8 *src, int bytes); +@ +@---------------------------------------------------------------- +copy_screen_32bit_to_16bit: +stmdb sp!, {r4-r6, lr} +copy_screen_32bit_to_16bit_loop: +ldr r3, [r1], #4 +rev r3, r3 +lsr r4, r3, #27 +lsr r5, r3, #18 +and r5, r5, #63 +lsr r6, r3, #11 +and r6, r6, #31 +orr r6, r6, r5, lsl #5 +orr r6, r6, r4, lsl #11 +strh r6, [r0], #2 +subs r2, r2, #4 +bne copy_screen_32bit_to_16bit_loop +ldmia sp!, {r4-r6, pc}