From 0b6c650ebdfbc7766ce29b3a291ed27601eba275 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Mon, 1 Jan 2024 00:58:10 +0800 Subject: [PATCH] common.mk: add headless csv build rule --- .gitignore | 3 ++- common.mk | 3 +++ example/example.mk | 7 +++++++ geometry/heart.blend | Bin 882636 -> 882636 bytes regs/maple_bus_ft0.ods | Bin 11750 -> 12054 bytes 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b638a17..60a528d 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ __pycache__ *.gch scramble cdi4dc -tools/ttf_outline \ No newline at end of file +tools/ttf_outline +*.blend1 diff --git a/common.mk b/common.mk index 25146ff..5a0d1f9 100644 --- a/common.mk +++ b/common.mk @@ -130,6 +130,9 @@ audio.pcm: %.data.o: %.data $(BUILD_BINARY_O) +regs/%.csv: regs/%.ods + libreoffice --headless -convert-to csv:"Text - txt - csv (StarCalc)":44,34,76,,,,true --outdir regs/ $< + maple/maple_bus_commands.hpp: regs/maple_bus_commands.csv regs/gen/maple_bus_commands.py python regs/gen/maple_bus_commands.py $< > $@ diff --git a/example/example.mk b/example/example.mk index 332b821..0a2adcf 100644 --- a/example/example.mk +++ b/example/example.mk @@ -249,3 +249,10 @@ SERIAL_TRANSFER_OBJ = \ example/serial_transfer.elf: LDSCRIPT = $(LIB)/alt.lds example/serial_transfer.elf: $(START_OBJ) $(SERIAL_TRANSFER_OBJ) + +INTERRUPT_OBJ = \ + example/interrupt.o \ + serial.o + +example/interrupt.elf: LDSCRIPT = $(LIB)/alt.lds +example/interrupt.elf: $(START_OBJ) $(INTERRUPT_OBJ) diff --git a/geometry/heart.blend b/geometry/heart.blend index f5d2fc3a0f914557969106ef209b70371da44691..9ed07af8fe706970c0739abf9c7b36c6265a40c2 100644 GIT binary patch delta 1650 zcmah}e^69a6yAH@TUg&dbk$WCG5N6zq9Lxz)@rnG4G;}YEg3Oah7?g#ihu^4n837_ zX0pH;Ih*0nn8F#GU2FAW>H?z8>X?C}4V5%ZIJK6@lG8{^L-)S7{_UGN@4M&R?|$!` zbML!X2W?jeZS_XzI^Qt4P+NDe)-CVaxql~#qmfgMq(sYy`is4dQDholFoyUrA&OMT z1P`rr%lR6Og7Wbw@-LrGh$iy%yxf<3n$FrsEIx*hpJA&}@fpfpdQuc6nihZRWfX?! zGm&i3{@HumSY&woe=o3zMfOb~P9lcpeXKAUs!UIW*>mqymdY$Ml6oShF3nXGOwDH^ zaqDDK38KfAu6&-Ms!$hU>W&y9OiL`WJ|INSH-I-pd16cz<^P)5D;4*R5i2g8OmL;P)2ZM2fvJGKGw&<^U&wTAL8J9(W5OZ)P1yn3gV)8c#cbbGZt&&;WEq_MaL>`I&MjT zG=7T(v#@;uOv0}c;2YA5uO&hr7y7Ooy@`~2;gQPqBvEclIX0tVDdqMiQSJ?FFhd?+ zS6Sx8J~IT#8SF@gcnn$~jSI%+vad}-F&X^i5Sz*4d)8J{ffP#J%>q*}oB|m&-~5nD2Alx{I(JCY+070k zHE@^HoBCbqR`k16h3a(>j5fB`CaO$d<2=^)x)ggV7HotCm~)#q;PMjgOEj#b9d#9h zPW1eyQBMFxu)ekMCfYph7q?Y8>2!^>zq3)wwz=Bojq7Gf1l+G@ zN<;H~($h<3uq32A16TahQy)pf95WMXd+Xgs$G*S5kk&hII%yKl{VS$PzZP^les(oK zvuvzv+kQPdV0W!`tiE%=ku+z6ZB?SKbME!hEO*|b&K0A%7pl)hXPMJVJJ%d{X60+} z>w_?%rZ-abOOc{!QEekbCmcyMA6mo{n@~q{4%3`x(VVFUtEp|V%_U`w>t-5`C)7Zk z*!>Ur6R-6PCcM@w7}ZyL1u>zc0#ecr950l9+S?uA)`iaxY^(`9oO^>dPkrLKHx_QS zSDm}`V~^u(XR8BO&gV?%s~~CejS9HMlWh0N9YBqv##7T$i=q}yO-F5vd~%2I$_A`| zN6W*pOza4fSMkU_Ar-rVqzp%X5qwybL649BmXJLW!(p1A7#410Xh>Ls34?+KyTSsG zMMFXz4iD1Vrv`-#wEivhj9s$3Nx7qS3pde=1`BhwljXGg!bM$7>gJA2_OtAzRS;|_ zCL86V5y7dAF_o4p7dM;Wu;UUjV;9l;w2GAcKIqR1k#SCpK2M0T=TtrWSP1awC%hTk er|5lrsCBkat~BW_pbXtjQ}xtDxoK*Qb^ZTzKU+-z delta 1706 zcmb7De@s(X6n^)-*HT|!ld2WVk5QB#5(9*&Y*kyRV@6Ef7B|V9FouCa85)U@m?kDL zvqk29!IE)s(TQemZo^oj_&O9QVT@`VE8DVlQ8JRv1sq6mal`1=-Fsij+@HJ2dEdR? z{l4?gJ@>t9v-#I%^II)Y(c2bZuAB5eUw82p?|WX7M46s;QmvCbK6_oeo+L~DO&N8V zswW3c*4)9DFO~=bNA(juxhLfc0wDq);b$f?*lzH_qjd}yM$n(h*LI3($Ve*miho%y zrx>EoN}f=kNh2u!Uw3Hlq8Q5%cy~3+VCXc*l<5g1?@uDAC1yAmr*ynn${h?fN7kV$ z>zJcsx?6MLt5(>Ly<0>x>Jy+}@iZ8@g`pZsfO>+{E#fwbt+6!;oDk^3uan>_WxhmH zcI?ZjQ_m#BWg^lkHrZeq9!!A?iz}niXdZ2;m-de%ZnD8fasE6PU4h~#7Hk(&(31+; z()?6T9R}7@@7Yv1PyWE&E5I%8{4od5t$-_V{l2E{SV^`1n^bGwO10xFsdfh2(!ecQ z?^1Rm4T9tw9LxY42Gb#1%ra$aB`Fzjfv9Z9EqQWNX@X2DJ;sRT7|DcnB0Uh7s*Y9Q zTTP+Wk?~M2*#OQWVY(p|u9CDdDOWe4n8jsi6m1{L$ah z=mvU6yXakU#O+D2QQ`_;Ep$O{r;s2J!63v5CV|b_VE@YGt@YZE@@xuE8svya_Q0ol ze=~cLx?wNe0Z0A#sFS-Mdh9vvEO=D zTySZ~PtDDRT5uuraYKw_>xI$0prd{V_4iYMKjZ#aVNcU^j^UBsv!^+nPaajM@nzzqrO?P4QF z?u&-Q*sz!^f^Ai#QmuF(yL2Y|<^zwh|Br2mI5^3%Sv7->1wG)&cce57EI0Zjd&QVjZL}KGflm(~OEl6@)MJUJychlfjW8); diff --git a/regs/maple_bus_ft0.ods b/regs/maple_bus_ft0.ods index c9d336304c14f33ab4bb55c919130a148fe71154..2cbaf1acb76d9f1d70b5c4d794e1c6411cf9d0ac 100644 GIT binary patch delta 10036 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 U$wh_6!j{m&#e$K+en<6x0I&ljD*ylh delta 9697 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