From fb1246e38e08fda9dccb19a3bcedea9997aa5a2a Mon Sep 17 00:00:00 2001 From: sillysagiri Date: Wed, 16 Oct 2024 22:27:53 +0700 Subject: [PATCH] initial silly image implementation --- assets/silly/bmf/nds12_0.png | Bin 1192 -> 1124 bytes assets/silly/bmf/nds12_0.silly | Bin 0 -> 16388 bytes assets/silly/bmf/nds12_0.silly.gz | Bin 0 -> 763 bytes src/dothack/DotHack.java | 8 ++-- src/sillysagiri/BMF.java | 66 +++++++++++++++++++++++++++--- src/sillysagiri/Input.java | 10 ++--- src/sillysagiri/scene/Intro.java | 7 ++-- 7 files changed, 70 insertions(+), 21 deletions(-) create mode 100644 assets/silly/bmf/nds12_0.silly create mode 100644 assets/silly/bmf/nds12_0.silly.gz diff --git a/assets/silly/bmf/nds12_0.png b/assets/silly/bmf/nds12_0.png index 284a5510e20885405ac660f36d3d82a0525be2d0..a6a93e7698258e049f6d0556daf25d4232b644ea 100644 GIT binary patch delta 1104 zcmV-W1h4z33FHWnBYyx1a7bBm000XT000XT0n*)m`~Uz17D+@wRCt{2oa>I`APj|> zD)0Zu-Tjr3>-utRNHS^9Cyk~9#uzZz(AEAtpU;0I;qiFvsM1!4hrP@SA$z@)TQwG` zfB!*~=_oE+34fdC6xMj7B-lGumpK5siIbhNFoVw4!5-h66-b zqRhiXLl(#XGeW=$vSc+Xx8y4Qj#0<~q6tOrty&f}R_m^`ul9w859^e<+QF=O+CN8Y z)AB62<7bQ}*VDQMMDbnAL`Pcmcx37E9%?H3SCyl7dVfSoadvW9C!%GCrBlj`QE-6j zglmH=UuAQ?sMDm^;o}84~DzVu5{7GalY@f&$B?zmN9PdhZMV8)4 zL}!voT|T2HlCRF=+X;ZgzK+4w%pD&BW)EVEcFJzQXfEN|Y8~P7LC1>am6t?mPb&$G z6h{W3%zx|}L{I0`IXW~%NpmENPy>oQc|uMFBy4}UCGoJXGkb(0R8U zM}MAVrLTkKZ|?~>Go-rUUOYwgp5b8GB3kp+!CFME7x}DlUjj8NcI=&ZJ@Sy^TOe~%-v$4FttQpzx@Wf3|!)Z=l zBDHLnx0SAQS={E`3}wW(L|a``=4G9i&fOnzpI<)n#=`A4;T%Y!uQ!gwy1fv#kT7?2 zC!yfk7E+Tv-LM#Y*LyOda@_uCS}K*?5_>IPl@0A_k*T(>!6M=;Y8HkSOei*3&ZbVe zhlU*3;Pug0zo_!mWQ?-n>!mL(9~RL88FDjh8}nk1GRtXMg=_w8$Ai}h#jq4Hd_IB; z&Q$T94~}q{fT1T{m9IVULNW5N0hUrO?1vEqI4+Y&?MO+zx;XjKrOthasheE{#F<1@ z(>3~Ov2zG8_wE>K9$qQFTFa)fxyESH%HX5fS?C$N`7EG+NDgE@=#%WfMeLHF%K;_` zxp#uAd_k-7JKd!49W#43Qg-)U`nG9lXOkfZJ977iE0~2K{+YzMzIHp=@w2f3${ZmA zzAqUNSN0opmSmfUI_tfuZ;ti>D!s0RJt}=pD1s~UPujO``w$l$0O?J5;x2qqFYeB!t!KW?Qbe}20GyL> z%&tBZMlck5!vhOW#{-b(4owzMXR*iGQCluG+@A=qq;yada z+ab~XS<9_=Ao2>J73J{X-1yweiLYYTKrUF@HmL;XWm}iSj^ngbJ*A+@_5G0!k$_L{ zZg69j2d%TtDAHRW{HZw)Ups0Qn|$k4C`iEH7UJk{v7sFoIWUN8!kZI-@vDlcC;$^} zjc2UQcrHK9wB$dd?~_^vhK&h5nk%EiCGF54)Er*`i+)SS)Tbzs95~-aiO9HUfQ^Q* zvm54Pn3N2Gf*A!bnF6{RPOBCA388)f?Cv}wSf`NdB<*`Mc;{a8{1bPT&N$HK8gd#z zyXucnvZqH{YBJ%}2$))l`uJ?4Cz zOPz>`xBX>^?)E<_V6dJ@263-J<0AiB^8 zja)ur^m04YKTLaDY%)O8iw{zgVc0hIP0eB>KeS5(?)V#+v!k6#AA)rxmFuA4xZLGi zxT4Hrio{5bMy*Ma9+=Xv$hmfdB~VR)hCx1y94n5~Os#6$ntEbvYJJkoFF%|`kT}kh zf$3j(E_st%wv-P;9q?f%+p&?BrS$h6hU=BmuG1_{=k>#3=002*5fTFZ-_jY`E{+_e U7MrC7gZ|^|^P~5}(-FD<0*iS)1poj5 diff --git a/assets/silly/bmf/nds12_0.silly b/assets/silly/bmf/nds12_0.silly new file mode 100644 index 0000000000000000000000000000000000000000..98338baf6e2da04439a300de4ed2c2ee8e13dddb GIT binary patch literal 16388 zcmeH_fsPzE3`6hJ`f2_1v;^@$%JxpS*Gt+29$-fjMNzb8|NQvlRe%72C9sx^(FZpZ9M%t@@>8mrLuSZN<2EHuc#`q-zzSY=jO)xk;8K$#v;)hPpnb*_p%^S@}5xvz7T>5j0 z={-(2^rMa+c}$Kv(|rOn@sX*X3A$$N=*Si#UhFms%ou_F9GM|9tN6V8PdL~b@xJ5fIGek~ z=V=eZ;IBD#_a|G7`82n4Si-=ca`Br-ZH%`S^7f3oGiU$QF$$mF6Bk!}c@+G`>4LVB zayHrV8JVmTCo0xKts`?MpYX)d(;W5kxH@5QTB~#QTi5k@%Dks@M@iYL!rqSTgH5mT z^WJR8EKF|(Z>{9v!ds(H3K~t2r>I`{sg2qD+K;#MuI7g^_ZUZMR{Q)s;ocVlnvEb& z(Y=26uCF~mr^HX3D$94Cd05P?(bMMf7H8$1YGeKG^Z)xi?sq@kd-AOw4*f;;NzNu_ zIGv+0BXf$c^47FsnAy--`~_`&P(^cj?>^wd_`TzL{`IuEuVmu*Cb_HbwW68UG@d!W zPxz=1VVqT9*@LU(WZq{5V^*b)xA1l@97p%pJZ{!LOfg{L0WR+0!VJ!&;`{kNpAFy7 zdRMmMnfdHU2ZurW#GskPd3nj#C&@$814%V<~a~+P{o~RyxFrTm^(34==I#xOcgz2tD-f+|M6Kn>Rg*uKmD5Xp3~C? z?>NuH$HltQcy2x!&aIGpZAI^#2nwK2?#`Z{&{ox^>0nmsHiOz2729A&vTDZ!1+1_VXA_ zmZWOrC$+l}10H|a&)diCE9my4@kS&6yuU{avelX2mG*=&@*c5$zK=iElZ~~+?|qCT zKd=082m55dDT-^G`l%X^VZY)ZQL}4eY&EKMGVM|2r^xTk+sfGE_kPZ^U*V^{{|~>? z=YFs1f6dSRT$}g&zLxF$KEGA~=iiH}*#zy&LzSZx!*S?Cp$J8~tzpY!XyGQta&ugBE|89AE zd*%Gm%G=LkJmxd|{k)M^)}z>Swu;nJt1YjK{OlUTtYd0-RmBI55#3sRC$VOG&HQ_e ze~`bL-&Z}?TRb}>+2gmTj{o%g?2fcvW&M)RQG90m`jtvS_d>Mr9T=IJKY!2fBR-!Z zFpGD_lU3Dz{&g<$?7sU*MBa+uE1s+TdGDO%pO3izYy7(BDgNv4_U&r^H7?Ab$1&$$ zG1wmD`_J3heP;cyStdVXExfa`{M+B@*AY*>3urv%Z5~GUvU=rOTGfQLA-il3Pp4#A z_ml5gB>ip~zwYz+oeMV-kRrFvZVOU}H*U$3N7q8Qro?9bZlpEkz% z`mCBY+oK|U?)(j{JH|68k0kNnovxwGAWRho~iYnfhejxp;;vx<18 z?76-M*q;jj{PvGl@f5OnhHCwsdB~ReSAfobZMIeZt{R@~@@MxS*FSyF{zj`@QD?l9 tYW(jku7CeMY_(dgR;$%&wOXxKtJP|?TCG;A)oT40eFJggKaT`J002bAv-ki2 literal 0 HcmV?d00001 diff --git a/src/dothack/DotHack.java b/src/dothack/DotHack.java index 80c63a7..3e62ee7 100644 --- a/src/dothack/DotHack.java +++ b/src/dothack/DotHack.java @@ -23,7 +23,7 @@ public class DotHack extends MIDlet implements Runnable { _display.setCurrent(game); thread = new Thread(this); - // thread.setPriority(Thread.MAX_PRIORITY); + thread.setPriority(Thread.MAX_PRIORITY); thread.start(); sagiri.Set_Scene(new Intro()); @@ -37,13 +37,13 @@ public class DotHack extends MIDlet implements Runnable { while (true) { sagiri.time_begin = System.currentTimeMillis(); - try { Thread.sleep(1000/sagiri.fps); } - catch (Exception e) {} - game.repaint(); game.serviceRepaints(); sagiri.input.Update(); + + try { Thread.sleep(1000/sagiri.fps); } + catch (Exception e) {} sagiri.time_delta = System.currentTimeMillis() - sagiri.time_begin; } diff --git a/src/sillysagiri/BMF.java b/src/sillysagiri/BMF.java index 43eda4f..c88f19e 100644 --- a/src/sillysagiri/BMF.java +++ b/src/sillysagiri/BMF.java @@ -1,11 +1,14 @@ package sillysagiri; +import java.io.ByteArrayOutputStream; import java.io.InputStream; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.game.Sprite; +import sillysagiri.scene.DeathError; + public class BMF { public static final byte ID = 0; public static final byte X = 1; @@ -156,13 +159,64 @@ public class BMF { */ public void SetColor(int rgb) { - int[] buffer = new int[img.getWidth()*img.getHeight()]; - img.getRGB(buffer, 0, img.getWidth(), 0, 0, img.getWidth(), img.getHeight()); - - for (int i=0; i> 15) & 0x01); + char blue = (char)((i >> 10) & 0x1F); + char green = (char)((i >> 5) & 0x1F); + char red = (char)(i & 0x1F); + + // Scale the 5-bit values to 8-bit + if (alpha == 1) alpha = 255; + else alpha = 0; + + red = (char)((red << 3) | 0x07); + blue = (char)((green << 3) | 0x07); + green = (char)((blue << 3) | 0x07); + + // Combine into 24-bit value AARRGGBB + buffer[pointer] = (alpha << 24) | (red << 16) | (green << 8) | blue; + pointer++; + } + + // img = Image.createRGBImage(buffer, img.getWidth(), img.getHeight(), true); + img = Image.createRGBImage(buffer, 128, 64, true); + } + catch(Exception e) + { + e.printStackTrace(); + Sagiri._instance.Set_Scene(new DeathError(e)); + } } // TODO: handle multiline diff --git a/src/sillysagiri/Input.java b/src/sillysagiri/Input.java index 3276b5a..d6992d7 100644 --- a/src/sillysagiri/Input.java +++ b/src/sillysagiri/Input.java @@ -1,21 +1,17 @@ package sillysagiri; public final class Input { - public int state_keycode = KeyCode.NONE; + public int state_keycode = Sagiri.KEY_NONE; public int state_keyphase = 0; public int state_touchState = Sagiri.TOUCH_NONE; public int touchX = 0; public int touchY = 0; - - public Input() - { - } public final void Update() { - if (state_keyphase == 0) state_keyphase = KeyCode.NONE; - if (state_keyphase != 0 && state_keyphase != KeyCode.NONE) state_keyphase++; + if (state_keyphase == 0) state_keyphase = Sagiri.KEY_NONE; + if (state_keyphase != 0 && state_keyphase != Sagiri.KEY_NONE) state_keyphase++; state_touchState = Sagiri.TOUCH_NONE; } diff --git a/src/sillysagiri/scene/Intro.java b/src/sillysagiri/scene/Intro.java index d48c4a9..026469a 100644 --- a/src/sillysagiri/scene/Intro.java +++ b/src/sillysagiri/scene/Intro.java @@ -1,6 +1,5 @@ package sillysagiri.scene; import java.io.IOException; -import java.util.Enumeration; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; @@ -8,8 +7,6 @@ import javax.microedition.lcdui.game.Sprite; import sillysagiri.BMF; import sillysagiri.Easing; -import sillysagiri.Input; -import sillysagiri.KeyCode; import sillysagiri.Scene; import sillysagiri.Utils; @@ -29,7 +26,7 @@ public class Intro extends Scene { bmf_normal = BMF.Create("/silly/bmf/nds12_0.png", "/silly/bmf/nds12.fnt"); bmf_outline = BMF.Create("/silly/bmf/onds12_0.png", "/silly/bmf/onds12.fnt"); bmf_black = BMF.Create("/silly/bmf/nds12_0.png", "/silly/bmf/nds12.fnt"); - bmf_black.SetColor(0xFF000000); + bmf_black.SetColor(0xFFFF0000); img_logo = Image.createImage("/t_1.png"); } catch(Exception e) @@ -131,6 +128,8 @@ public class Intro extends Scene { Utils.GetScreenWidth()/2, (int)(Utils.GetScreenHeight()*0.7), Graphics.VCENTER | Graphics.HCENTER); + g.drawImage(bmf_black.img, 0, 0, 20); + if (sagiri.input.IsKeyDownAny()) sagiri.Set_Scene(new MainMenu()); }