From 98d6b66e72e4cc6eb686f5eec64ed43408891e1d Mon Sep 17 00:00:00 2001 From: saintfrater <13979047+saintfrater@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:16:33 +0100 Subject: [PATCH] include fonts --- .gitignore | 3 +-- readme.md | 12 ++++++++++++ src/assets/6X8.F08 | Bin 0 -> 2048 bytes src/assets/8X8.F08 | Bin 0 -> 2048 bytes src/assets/8X8ITAL.F08 | Bin 0 -> 2048 bytes src/assets/8X8THIN.F08 | Bin 0 -> 2048 bytes src/assets/CGA-TH.F08 | Bin 0 -> 2048 bytes src/assets/FM-T-437.F08 | Bin 0 -> 2048 bytes src/gui/lib-logic.asm | 4 ++-- 9 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 src/assets/6X8.F08 create mode 100644 src/assets/8X8.F08 create mode 100644 src/assets/8X8ITAL.F08 create mode 100644 src/assets/8X8THIN.F08 create mode 100644 src/assets/CGA-TH.F08 create mode 100644 src/assets/FM-T-437.F08 diff --git a/.gitignore b/.gitignore index 8970282..7a5bd8d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,5 +8,4 @@ build/ gfx/ roms/ tools/ -doc/generated -assets/ +doc/generated/ \ No newline at end of file diff --git a/readme.md b/readme.md index edc5c8a..a468a7c 100644 --- a/readme.md +++ b/readme.md @@ -64,6 +64,12 @@ To build and run this project, the following tools and components are required: - **QEMU VGA BIOS** The standard QEMU VGA BIOS (`vgabios.bin`) is required to initialize the VGA hardware, allowing the custom BIOS to rely on a known and stable VGA implementation while focusing on its own core logic. +- **VGA Text Font** + You may want to use "custom" font; you can pick any "F08" (8 bytes per character) font from this repo: + + https://github.com/viler-int10h/vga-text-mode-fonts + + --- ### API @@ -148,6 +154,12 @@ Utilisé comme émulateur PC principal pour tester et déboguer le BIOS personna - **BIOS VGA de QEMU** Le BIOS VGA standard de QEMU (vgabios.bin) est utilisé pour initialiser le matériel vidéo, ce qui permet au projet de se concentrer sur le développement du BIOS sans réimplémenter la logique VGA complète. +- **VGA Text Font** + Vous pouvez utiliser des polices de caractères personnalisées. Vous pouvez choisir n'importe quelle police 'F08' (8 octets par caractère) de ce référentiel: + + https://github.com/viler-int10h/vga-text-mode-fonts + + ---- ### API diff --git a/src/assets/6X8.F08 b/src/assets/6X8.F08 new file mode 100644 index 0000000000000000000000000000000000000000..71a61ad8744184f6a8c427bbe1751d7a58b7e7d2 GIT binary patch literal 2048 zcmX|C9iZ$y5FIQA3k$)*gW|%4V6pJvVsSATcn}O03lECH#l_;{hl`5~7m9&}@0>~Z zO?P`Tlga#Ll8RLFC6`C?LQD@YGL}-j6|r8?kC?DtSt2JmU9c)WN&!EPmCu>{xxK8b z6Q7c|#Yz~0b8aIJ!}lgO`^Up)8@IjeTa=~^CA1B!W=vUmkmMmD=S$ah(hp;2hM|XJ zk@x$fS9D0N& zc8vkMmr_Yd_LTU89EF2jFrXd&jHSrQae<3FPeW}YO?>$c8` zkDN2~Qo84b`dGxc=?n_Wv##X14*q?^JhK|6AJtbFEqNFmfg?j#geL3e9sIG|oD10h znto_VnkS2MP?2fE<|$3a&p~3m-qZaG2_k_1rnxL>xhP*E_M@{*mHe_?xL44Je=8Hj zn3tM=j9LJdQZDiz;?2OSPy5WD{QZgo$c6T>QP(@`Arer4U9^olh6r_y1Bm>|Gk+ip zpnPD#1nut%`V#w&)DV>Z$*><>rY&@b$GJsAaG#Smldy!a-$GK*52%dRBOSOM*dHii z+k)w#SM|ALT(=#F6N^Heac(P42agjqvSSdHVlR7q#vKv;F=75AUugGv{tGMkF`W<6 zFnGvo9kz;t48w44sygO5O+D0YU2y{Y@8Ri&g8Rf5p2+7sKj+Mt()*kt^M|@fU z`fU$CK|DMl&-?4PAeb3VqIH835P3}O6A+FFfkzWieE(Qb&i3%eIDL{L%u$X^ZRA7U6UWnK-!6b^|7R#xer4 z@u%y$j&>QvN$0Cy4!@51H;_?%;{D{sxZej+pTp-tr-LZt9M0W5-j_Y1YzvMb z5nlq_|0Ox=cu*ujZ^Cy3blEV!T9Dvdh;~C~v72!&foU8c(!0L)FD&Pbd&Dm}-+jb| zf%{JHYc?wE=)-=cHQvuSr98hF0nZ)X9JH=ad^+Cx{dnC3KjBvt!IAh?Q6iqPWL+oA R<{iNMwx5E|29OT)^*_7WcV_?q literal 0 HcmV?d00001 diff --git a/src/assets/8X8.F08 b/src/assets/8X8.F08 new file mode 100644 index 0000000000000000000000000000000000000000..b4505de2913a41c9ddfce03398320e18fe1cd3c9 GIT binary patch literal 2048 zcmYLKPix~w6o1`-nuD-&oYo?SvL9fwS|$b$a@j*qy%tJO0+k76jbku0f~cd-tzRJ@ zpqGA!fWeSn1bYn_N>0tClszS;1gpQ_NTE-b-n=(&-k;yR8H;q}uYS9_xxVtg-L{*D z*3b9*eKk3f!z8P-|3$!-8*Nc-CWhWWE}EZ8M1b7GN&R>)WtXP z7l>yOS8FRQK05eJEVd_(E&3V8|5K|1HdNRs!@e%HM*R!QE=T-91U2-OeGdGMMoA^) zDG{%h+DudAt7H=DkE8=&sR_U;Xqgupg8+b6tRVO!P9h5+PKUwY5b`t){zK!*p~{r{ zlKaPH%ma*lE~vjY|5Cw2zm2qTo)Zkzy ziImOrx)i@59y6#rzU(<_33}j><76bT3%E4>I@kr-^>}1Of)tKr*~Z4ZAp=<@qd*6Z59j zEA|a87F;d6rup~wB>7Sn3u+A9zMRp-S zkuEOhXZ<|wm{pe-D&r)G`L#V!=I~Qb!=9+)9M0Y1#|6%nb(O2IgWlod%h8S@2t=)T zA0sOM8Yb93P=?EYy5NN(zUw<5+8QmvQ)SEr&R>jsgMHz*TP%-a@_fzvJJ$)DjD+d% zpiVR=hPbY9JA1(wHxthBXoPBdy1T<`$jAn-6di1bzh=^>}2r!_Fxd@#~J-zRnK>qwvPulN1+o?eJb zN}l}uGHD0{?>CU}Gb2shAu* zdv-7>mM$!PlVw@t20`G8L=2pPl$+-#+y1ui-#<+c?z(4Z?%jj&$t<6pjA^mq5m}y!teHy5pIQ^@Jj*B!f+)+l4yD$S-*evgZ$Ta?6{YE%R-}qliuJG`PGiD8B>~noENp<> zq$R_!vZGDbBhD11U{cdLz2yuZ_|qv}{rd4|hrov8Po}7w>*sior!S+XmP5pAIZ`xX z-^NswI^lRoGb=HYbk*@61~k6{r?AlEQ3frz%aH72_s zPNz9}Dpj6Y7c?S#uGyAoQ zQ-#VdWr#Qz^GuGga=yEZe6#WSc!r9CcOLFN1TMYp4ZqiM`CxNgAl7Syo(tWAtn1Zf z$JT5}+)vo=5-uEEIoRl4uW3@V)81@%?$NM^n+w15y&wMB+4+_X({ycH5%<^YsD!Nb+>$QPs@%o)R*Y0&X?r<25lZ}maCaB|Idc9%txfG`T9`0^)dv9-Vlc+Ns zKGJ)Q|An^QG`*WQJ+p~uqFZ!@8%!pXpc`1W+3a*Wtfz2)Kct0sS3kIRc^wC?E!%B; zkQTGZ6$cdcIk Vqh~W0BN2)-ZI>lnWT2A6`(Ja#IEnxO literal 0 HcmV?d00001 diff --git a/src/assets/8X8THIN.F08 b/src/assets/8X8THIN.F08 new file mode 100644 index 0000000000000000000000000000000000000000..3f9caa3dcb79801e31e3acd9b243224755102c3d GIT binary patch literal 2048 zcmYjSy=xpt6o0HYVv9u@jstITK~B_D-an`q*O#y*B7VIuSsody{)J|Jw7=( zKCPE-ee~h7LF;)+1HNtr;1mYCpF~>_$ScQm-(or=^Sv${j z1D0&p+X*H{SE z9IH4ksTCuyxJ8pBj^kuPChlaN*f=hC?D#kF$Asm@G)-s>P)3Ws?_;58oOIGovPC-* zgn3&}2J0XiZw`B`k9a}K`jfE7c&Kh!+(}*lqwW}=4p3L*Z`Fa>NZbsV4+et=#Go0k zTh4k@uFLY2CI~;zC$!7i`yNf$OfVtQDfZ{f0A34Q82PM7#s=AI8YV+T;9* zp0BRnMFHr+#>VIVBIB4Lby0xQwNWDk#;o2$aF;*0%^wZdK~8QQ@eq|*@{&R!MnZ&` zZ}$eJL9h@6DXnfmm5HmiK6P1!o}z+^qUcfx3FoPF<||;VtmWy9iy23K@?0&n6xxsV zc}1D0Gmf2O*R9-lbxCJfqtUp}qKFkW{FO38yhQiIwc-)AlVVyFU!xx}&h@daqOiXl zh8%^k*m8{XIw-cQlgL6I4}xxxD7jLz_t z{{gxzXD(pnk|%?lT_M`|W*4=U+D*YwwDGWr<&3deKy52$d$;-3ylv+bwS~jiR-b2G z&&FBKnC*H+Hn9Bww9Utn0b{_MPFvu*vt9}8iB9#4BVUW0Q~E-qwd^;i?q8L@~z zFK4tgBbGV!m0>Yl;q6}P5-VtQ4kB86%w7OxBsCVCy8V7X#da%-U-EpH?r-pcLZ#qN z5T$Kv^q+0RWE6+caM2wd9gVPW@bkm}2n~rF|052{5=-3&-b)cl`$A6ar~=s!`}z-E Cg^Z*C literal 0 HcmV?d00001 diff --git a/src/assets/CGA-TH.F08 b/src/assets/CGA-TH.F08 new file mode 100644 index 0000000000000000000000000000000000000000..0abea4efce7a0add962df1672e26eb910d67cdea GIT binary patch literal 2048 zcmYjSy=xpt6o0HYVv9u@jstITrx&GpRun~^2ogzdagrxR@sCJ^Wr&0*P%0oQ%ZpR!m!!6}-d0qe9-o{X zpO#CvKKb?F;9#n>)+#W;+VYx|-s zATTP37$~CI>(|d4jRtkMk}OO9o^rIt7^?@h65(tLfjEWOy zfTHbkI|AnT3*ag}EGiHQQX@g^l_81@o``~Os+=4KCqH}QPLJY#{KMhl3;2^(Pe|C8 zf~4>~k9k>ABpF0PH!j3bX^w*MU$u#ccLxY zkpS%5dNNoC&}3uSV}16gqrm!;u!s2dP~Eb0CwdMVbw^&a0qTnUAqFU7BVp5HJQxff z5);jE-D1|8ab1>YG)4GnI;CCC-gRioX1pnhPPRWk2H;ZI+Av2sUA;zQDetYU++$j& z@VDSNk9xhwmNux9->@?P`b(~OK9+Y^!*GJmiEaK4??9kq$pyG$xm*{b7l?NN{Nn_P zSbLlg(X-XnyC?uX9E~2hi%f@1QWpitt2S!*ps}m>2)N20*yfLh>ma8}j(CW29C=Q@ z5Mv>H?6$GW;D&d%f5c!YA|^;_UnB7 zIz9|V<=6GB9n>qwf*y=)>yqLkVUGAVB7}|VO70VYNmE8-90y^)>wozCtKZxD-SEQ~ zKkYlL$Y()~s2??;g>Td+3JXBxu-Xj?wpyUm~GZM&bSEh_rj z>hrGaTF!i?*-o>0ZTal2qMOaiFKAe|{_MVHvu*vtA2VTp9#6ZLm%toV6&EtIdaMa< z4b0-@WerO;Ft1Wy8D_&39`{`5I6s}2vRJ!X6sU+qSLI!k;eNbQiyTH7Ad^;P$ z5aVVtxNjO<^a_rS#+V!Y`QiTvjmfhd+n{VF%&ivqE^%~!b%H74<=Y|d3puq?1+WYI F`47z0jJ5y( literal 0 HcmV?d00001 diff --git a/src/assets/FM-T-437.F08 b/src/assets/FM-T-437.F08 new file mode 100644 index 0000000000000000000000000000000000000000..9883a718990159bb25c1e8f5733af59abbec095b GIT binary patch literal 2048 zcmYLKQES{r5S}P%ycZ5zF(%xDu;uI09DceQV=hMM6d?|sInoelDaIvm1Sim!dupyh ztZ@ECen4OP7fPP|Gy2vV{8swt2jlDa&Fbh#Xm)02XJ)^dU5R*dm%m+p`F!cz>d)2H z&C2yZG))#8F>$6mj+^FZld0UqnMmqDsjRLpL02nD3lQZmpsUr^!>^u~BQ8)D>mj@er&ECcX_&+e_AU1uH^kqDqKJRoo za6g+o1HyMy>~imCZq6MZw0VO0%J%M%HWIwy}J6G{@nL6it`&#(ms%GT~NL6^+J zQ?DlyU}cg^&jL2v6Vn^OL56(>ae{=wy8*Tvc6Y1`LveW>P{w3UoSQ-;6L!AjSrCrk zU$>#0aTx@;L3Ww|a%E)oA4w!}|MZ7hvdcUiGLgF9Py78Edf?WNWoc0dyF~naNgzGX zb^ayhu}0ScOHeGEAqaIZ%4$)S1Z(7w$d`BxPPC=ksEI4jnQ;{2(})6q6H`U7kvJJE~D}$Vao;Q8-e2#5dAI__*cOFwe{C)%#Ml z)QfzWg23S)_VmyFQ=Xp#06CdVPJ)0k@es)XKrIo&ZFeEVT=M`&zlhM?G4%vM=dm6R z9RP5$8AVAHZL$wZvM?qzW+8_&n3AGF`RUXBy3U43(tl{ug8NJhk4FjQh)WWAZd$p; z2iD%672`VCDKA<)(!%2s8P5yfXwsuSa0rb2~aA&Q@mfw z&}*KN@%b`u?)#E(s=enXn^sfaJFM5Qzo0*M^d73wZsnWu;iC@DXEnt6@cRne{J4Mm z30wcbivLaO`yk;h1j;0 z-G({7wi0<#`se%K{qxTs{?V$npIha(h8*{ky>2h5JLPNrbx8f1MDAMoI=n+T>d6hf z+=7$5Ut_i~W{8z)MOGRQdT^?!*Ll@%sh<9x@nfGQV_i2+ynLhfTy@jVQ%{+Gti4e^ zqj}j{a-Cnt({}{5ARq!cPQODEo6<@qec0aQ;&+^6g8e+nB7Mna1CrIG4PPti6!UCnojw z$9hhKFg<;pCiyPz?;Q87wk!Gyp7r&=i%f7?;dcI?Kk9Va-GSlXgR9R8{~tWbco(l0 i7%Qn3BQ4sN8N46#jQsevEK4XyxE0u?IJY1j=;uE>0A+gs literal 0 HcmV?d00001 diff --git a/src/gui/lib-logic.asm b/src/gui/lib-logic.asm index 3fab1b0..dbfeebd 100644 --- a/src/gui/lib-logic.asm +++ b/src/gui/lib-logic.asm @@ -308,10 +308,10 @@ gui_slider_update_pixels: .set_min: ; Si la valeur est sous le minimum, on colle au début - movzx ax, word [gs:si + widget.x] + mov ax, word [gs:si + widget.x] cmp byte [gs:si + widget.attr_mode], 2 jne .force_store - movzx ax, word [gs:si + widget.y] + mov ax, word [gs:si + widget.y] .force_store: mov [gs:si + widget.thumb_pos], ax