From 25ffbde1ab5dada6f063ab01aae3c793ead0c302 Mon Sep 17 00:00:00 2001 From: Antoine Date: Mon, 15 Jul 2019 13:37:06 +0200 Subject: [PATCH] Ajout des sources --- Code/Makefile | 136 ++++++++++++++++++++++++++++ Code/assets-cg/icon-cg-sel.png | Bin 0 -> 1823 bytes Code/assets-cg/icon-cg-uns.png | Bin 0 -> 1948 bytes Code/assets-cg/img/cessna_172SP.png | Bin 0 -> 1595 bytes Code/assets-cg/img/cockpit.png | Bin 0 -> 3243 bytes Code/assets-fx/icon-fx.png | Bin 0 -> 7429 bytes Code/project.cfg | 19 ++++ Code/src/main.c | 12 +++ 8 files changed, 167 insertions(+) create mode 100755 Code/Makefile create mode 100755 Code/assets-cg/icon-cg-sel.png create mode 100755 Code/assets-cg/icon-cg-uns.png create mode 100644 Code/assets-cg/img/cessna_172SP.png create mode 100644 Code/assets-cg/img/cockpit.png create mode 100755 Code/assets-fx/icon-fx.png create mode 100644 Code/project.cfg create mode 100755 Code/src/main.c diff --git a/Code/Makefile b/Code/Makefile new file mode 100755 index 0000000..93a942d --- /dev/null +++ b/Code/Makefile @@ -0,0 +1,136 @@ +#! /usr/bin/make -f +# Default Makefile for fxSDK add-ins. This file was probably copied there by +# the [fxsdk] program. +#--- + +# +# Configuration +# + +include project.cfg + +# Compiler flags +cf := -mb -ffreestanding -nostdlib -Wall -Wextra \ + -fstrict-volatile-bitfields $(CFLAGS) +cf-fx := $(cf) -m3 -DFX9860G +cf-cg := $(cf) -m4-nofpu -DFXCG50 + +# Linker flags +lf-fx := $(LDFLAGS) -Tfx9860g.ld -lgint-fx -lgcc -Wl,-Map=build-fx/map +lf-cg := $(LDFLAGS) -Tfxcg50.ld -lgint-cg -lgcc -Wl,-Map=build-cg/map + +dflags = -MMD -MT $@ -MF $(@:.o=.d) -MP +cpflags := -R .bss -R .gint_bss + +g1af := -i "$(ICON_FX)" -n "$(NAME)" --internal="$(INTERNAL)" +g3af := -n basic:"$(NAME)" -i uns:"$(ICON_CG_UNS)" -i sel:"$(ICON_CG_SEL)" + +# +# File listings +# + +null := +filename := $(subst $(null) $(null),-,$(NAME)) + +elf = $(dir $<)$(filename).elf +bin = $(dir $<)$(filename).bin +target-fx := $(filename).g1a +target-cg := $(filename).g3a + +# Source files +src := $(wildcard src/*.c) +assets-fx := $(wildcard assets-fx/**/*) +assets-cg := $(wildcard assets-cg/**/*) + +# Object files +obj-fx := $(src:%.c=build-fx/%.o) $(assets-fx:assets-fx/%=build-fx/assets/%.o) +obj-cg := $(src:%.c=build-cg/%.o) $(assets-cg:assets-cg/%=build-cg/assets/%.o) + +# Additional dependencies +deps-fx := $(ICON_FX) +deps-cg := $(ICON_CG_UNS) $(ICON_CG_SEL) + +# All targets +all := +ifneq "$(wildcard build-fx)" "" +all += all-fx +endif +ifneq "$(wildcard build-cg)" "" +all += all-cg +endif + +# +# Build rules +# + +all: $(all) + +all-fx: $(target-fx) +all-cg: $(target-cg) + +$(target-fx): $(obj-fx) $(deps-fx) + + sh3eb-elf-gcc -o $(elf) $(obj-fx) $(cf-fx) $(lf-fx) + sh3eb-elf-objcopy -O binary $(cpflags) $(elf) $(bin) + fxg1a $(bin) -o $@ $(g1af) + +$(target-cg): $(obj-cg) $(deps-cg) + + sh4eb-elf-gcc -o $(elf) $(obj-cg) $(cf-cg) $(lf-cg) + sh4eb-elf-objcopy -O binary $(cpflags) $(elf) $(bin) + mkg3a $(g3af) $(bin) $@ + +# C sources +build-fx/%.o: %.c + @ mkdir -p $(dir $@) + sh3eb-elf-gcc -c $< -o $@ $(cf-fx) $(dflags) +build-cg/%.o: %.c + @ mkdir -p $(dir $@) + sh4eb-elf-gcc -c $< -o $@ $(cf-cg) $(dflags) + +# Images +build-fx/assets/img/%.o: assets-fx/img/% + @ mkdir -p $(dir $@) + fxconv -i $< -o $@ name:img_$(basename $*) + +build-cg/assets/img/%.o: assets-cg/img/% + @ echo -ne "\e[31;1mWARNING: image conversion for fxcg50 is not " + @ echo -ne "supported yet\e[0m" + @ mkdir -p $(dir $@) + fxconv -i $< -o $@ name:img_$(basename $*) + +# Fonts +build-fx/assets/fonts/%.o: assets-fx/fonts/% + @ mkdir -p $(dir $@) + fxconv -f $< -o $@ name:font_$(basename $*) $(FONT.$*) + +build-cg/assets/fonts/%.o: assets-cg/fonts/% + @ mkdir -p $(dir $@) + fxconv -f $< -o $@ name:font_$(basename $*) $(FONT.$*) + +# +# Cleaning and utilities +# + +# Dependency information +-include $(shell find build* -name *.d 2> /dev/null) +build-fx/%.d: ; +build-cg/%.d: ; +.PRECIOUS: build-fx build-cg build-fx/%.d build-cg/%.d %/ + +clean: + @ rm -rf build* +distclean: clean + @ rm -f $(target-fx) $(target-cg) + +install-fx: $(target-fx) + p7 send -f $< +install-cg: $(target-cg) + @ while [[ ! -h /dev/Prizm1 ]]; do sleep 1; done + @ mount /dev/Prizm1 + @ rm -f /mnt/prizm/$< + @ cp $< /mnt/prizm + @ umount /dev/Prizm1 + @- eject /dev/Prizm1 + +.PHONY: all all-fx all-cg clean distclean install-fx install-cg diff --git a/Code/assets-cg/icon-cg-sel.png b/Code/assets-cg/icon-cg-sel.png new file mode 100755 index 0000000000000000000000000000000000000000..cafbe9edc662f108117ee7179bf61a7c4e3abe69 GIT binary patch literal 1823 zcmV+)2jKXLP)Hg1+lHrgWSWcKdPn90sKGrRqvPeo9CG3uKX#J{(IASm?@+di}}l?o-=)F3E6 zwD^Ni=!>T7nL9I?X}YoAW$t|Qo$sD|?zw001?ah|SeB6#0T!CBEf+H4bBB+JJu8re zhoBb*p;u8ID_yBf0ya+zcePvJL&AGs+11_tpRKn>9TgyPA7ZoSs0)aX0r00)%XR^J z`jH<$>RKN5V(7OqK*TS4xZz{h!*f1C3ECFkK$#7nA@pGN!$;%jYv zwjAKwmYb0gKL(K8-kPtb5${A?tlI~wzMrJ6wTdBr=Y%%%EaEMQ&o}4FQ^DA)s*}Z> z!FI&AHCpoWI|RUqx?7s@$8!5^Q=anY%X@i5{QA6kNcMelpE>R6eCYFpmMsVT zrI(b06~u#xf1yS}_UGdMvD``!0~u->P=lA4?YN`hilQ z|3tHka)7T{2CGqwjZfMwx$5irQN_*|e4l)UHmiYuz74Yp1t^#>hrJ3-SOXDcC_o0^ z7T9R1gAN8V6s;5)ieI5-7aQlmJn}lUna#nz!j%5V$X|o`xX!dHWQRV27P1=rj;t2b zW$~+pTw@bIek?ZvKPDL<64`^#UNTAck#RBsB6*5DP4<%UA_FqU$I>2EH_cM;u)Q~SI+rg`Rn{L z_AC5qq~L$#SMj%U$6Cz0vP{G5Y*=%5RT^yu;}-DInZ=349rJPVM6C3K^oO)8y(fJr{l>k`ead~!ea?NsT>_Ci%bnxC;Vy6= zb6>{xYV#Ue-+LB$7`JEXmTRm^AtP)R9u{)KHsMiWGV&)32xCG~*nyU<>-!d;FP=Re z4r3qYr~6#KE>;1F`>_J_P5xC?ROxV(DIHdCO*p$HRQI@7^PwV@Pvuf+ z5K}u-6REM(K@W$srgorh0{i?O)v0c>QtHxU-hBdD(>iYJ4b2sIOVX2K8m~4gmYVA5 zh^QEb$V`rCQ-|7ZS{nuL-t>?3n=-o(6I(7vocj#GzCZEo`!3>+v;dYIfPu#&ZWzzX z2i^rZ^Mu;6+rb@?NPG+6)c5T6zxpzGe*M(x+{AON=PiJ>H#?ob-|uwRK0yDg0B4PV z0id6JRRdfL?*IS-!AV3xRCodH+`Ud4K@bP{f_`~@Dj6#qlv2qZ8aV>r6}6ka!1W6Qev z#j**LdR3Cg)Tg#~xeQgkItO@6eQKLGi!hr`y5&5kepl_+?a-a_uYM{RY zGiL+bOqQ1b@H{_rHo(nfc?kf|^D}1y+)S320Ps9NHG8@*-%19!O6D^Ga35E-D!^5m z{E7Bvvj)I7O^QXT!_86v-!yTJ0NjyRdff-$j^KMjZGa0Xo*{sH>I$_1E})bO;j*xl zWMUm$7A8V@F2k1MsVme5xPamr0=TEHP#fR^N~zEsH?K-jrq!9@=2aS$=PGea8Tt!; z&kyE*s7-&6Pfarv!G{vMYIsluhTi=^N$OipxZ?TS?>t1GAaM5ccyQGy_+a)kn&exp zbdQ_Hac^Nzw-if}=dhN5`!6Uky5;i+xJBz>EkpB}PGSBIps{q9kmA$;zH%@>@)^(2 z{6(Nb(p^G60Ki#d%buXQ#bb{3dw};voSy^S8Mt2_;C&J2=KyyG?w1F6U&Qd7uTTsr zxGc0_#cShh@Hjp;#u+{)q|B#W0!pa>msA{M0C&WdN&{R{af|`n5mzb=a7o2625?7Q zsdOFxBU)(zV&w$Lx;w*xUJg~O#Kw`j{srDYeGG?iX=(rf N002ovPDHLkV1g`qdN%+7 literal 0 HcmV?d00001 diff --git a/Code/assets-cg/icon-cg-uns.png b/Code/assets-cg/icon-cg-uns.png new file mode 100755 index 0000000000000000000000000000000000000000..cc57f73f629c913b803608f6ba2b067322a0a9e0 GIT binary patch literal 1948 zcmb`I`9IT-1IOQ{Es>kakWMMrCuKvL%9WU5w8$)1G3HvIa%^m|P*JD}G3xUn*UFVe zIhv!>DxxrkWTRS)i8;PK9^ZfA^TYG?{O$GYGsE4@Nl_jq4*-Co^GSQpKlb~>F*(Se z&6BFI0brAMn4O(_xSf+-R76xPCORM}#3>{)BsMI_)9C~NSY~E=<3e@4HIOZ&3%mF9 zVj>RHFFv$Y+^d*-`fzDOb25(yk7PK*hjs~qB|m%bzUs9+)UsBJc5o*joGH}kY-^(K zFkDm~MmCt;k>5MizrzsO@H@p_aJ_6c|Hz^Iu;$v)ke_66k*GNF=hF)!u;6Ls8Ai5- z477k{qGdioO1qhU)aX`fT8S2<6zid9gsX4`!O;qr8_$l}y-37=`NUgi)-*ZlY3_*8 z53K+8P$B)M%&&6qHUdl-J+WRpa!N&3n*f_~PBzVXpmf%35=Sf( za9y@)A^P=QptCD9&yo%M`s=aOM?R1$j~kijA(N*wv&$Y`y;@`@nGUa_CATWpZvh+L z{VVOcJnD?BYOvuk$Qbllt6QfY zEL!<|D#F3v1~IVq?8YI_vO))*RYOb3xs5{yT>UVE)y7IsuI_%bUkb)OU+u=%`U#B@ z9#1B;i<+^$%lPHlRdb2aD&Ze~@>lF!Q*4j#+mqCB5MwgyA zX6`Fi*)fUnDu4RX0?x)K%2dg*IuE=;SU#=omT6zTkg|~0VElX^#c-|r`8&#M$~#Ig zr2_}bKJun$vUS`vTAzgPmJq}+-?2n!{I;eGLPmJ?shztcG`B-zU%vH>pW*Z28~icK7H1avx@ID zFS~rq4TL>{A7B*B2+|*JyZX{KD-@G9MD*1Gi$)i2E)<%#D65|}b-E|r+TLnA_g!i_ zk<|b&bg8tS-I3e4uQ!i^Eybxrb;BKc*(b>g{QjlylC~A|xTLjy;YcT`dfJ5Ah&WQz zHYU0_fIPNQ1zgBXmMLM9y=DCrL;xU*bhbb46({qf@D0K1xXRV=?mcg}JW%aIMVC(O z>Y(!->waw^r}9a6=`LDxR-I12w6Ey!Q8c&Av zaEpU@3%s=!sGMXKFNZz|;sqAHe`o;k>1H6RY+L|{K5XK%mW6g)Sf52$uP$?PcCb{= zw8i9ZA8oN4tUUEft)e|yF-tJHB%81l#!OP)cu1FXQx_~HER2iutZQQuiy~`kP#OKq zaq7{o3XgMt!8|OUeu-L=gl_QNYdmO^=c}q=U~YHN4F1R9`$mu^+rYlsiuOU6zaJ8< zo{0vvQ`iM8AoBj4Gr(5H_Gz}G4kNb!OXGxQ5IduLp9~-Ahr$Ag55M;SBWYDadA z``$B$_xU5YA3uqAo`0DVY;bDE$aF<7@3%CZ;MXOwdO^ExhF^$*H z>JKmflsg)TBNtmZ4JhWlgMw+4xX@XfS-ZEdYop$uj2b1?^vAfK4Z@KJ2*Jh*mW4f> zQyjI#VmnFBp*jDVhP&0=FZEbA#qfG6w=Z4Cw`xJDIZD#my1d5bKK!zPY1y7E}t_GSgr^v+V_cO4yJ2}Jm7H!BQcf~tdVZlfi zs>q^^Z7`)jJxO9Q`zPDzIgT{S10DZ!SsP_ws@A%vtR+>;z@4oZ`G529!47;Dpj$xv QQ(eH>!Ofm^;@p-00f|n)#Q*>R literal 0 HcmV?d00001 diff --git a/Code/assets-cg/img/cessna_172SP.png b/Code/assets-cg/img/cessna_172SP.png new file mode 100644 index 0000000000000000000000000000000000000000..9b0ec0422eb62e2390e3a5a4c8a30c00748dff15 GIT binary patch literal 1595 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 literal 0 HcmV?d00001 diff --git a/Code/assets-fx/icon-fx.png b/Code/assets-fx/icon-fx.png new file mode 100755 index 0000000000000000000000000000000000000000..c92f12afab0af9f7b3d8e2bec76a1dc5cc9c08a1 GIT binary patch literal 7429 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 +#include + +int main(void) +{ + dclear(C_WHITE); + dtext(1, 1, "Sample fxSDK add-in.", C_BLACK, C_NONE); + dupdate(); + + getkey(); + return 1; +}