Initial BMF support
BIN
assets/silly/bmf/nds12.fnt
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
assets/silly/bmf/nds12.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/silly/bmf/onds12.fnt
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
assets/silly/bmf/onds12.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
raw/nds12/NDS12.ttf
Normal file
59
raw/nds12/config.bmfc
Normal file
@ -0,0 +1,59 @@
|
||||
# AngelCode Bitmap Font Generator configuration file
|
||||
fileVersion=1
|
||||
|
||||
# font settings
|
||||
fontName=NDS12
|
||||
fontFile=
|
||||
charSet=0
|
||||
fontSize=-10
|
||||
aa=1
|
||||
scaleH=100
|
||||
useSmoothing=1
|
||||
isBold=0
|
||||
isItalic=0
|
||||
useUnicode=1
|
||||
disableBoxChars=1
|
||||
outputInvalidCharGlyph=0
|
||||
dontIncludeKerningPairs=0
|
||||
useHinting=0
|
||||
renderFromOutline=0
|
||||
useClearType=1
|
||||
autoFitNumPages=0
|
||||
autoFitFontSizeMin=0
|
||||
autoFitFontSizeMax=0
|
||||
|
||||
# character alignment
|
||||
paddingDown=0
|
||||
paddingUp=0
|
||||
paddingRight=0
|
||||
paddingLeft=0
|
||||
spacingHoriz=1
|
||||
spacingVert=1
|
||||
useFixedHeight=0
|
||||
forceZero=0
|
||||
widthPaddingFactor=0.00
|
||||
|
||||
# output file
|
||||
outWidth=128
|
||||
outHeight=64
|
||||
outBitDepth=32
|
||||
fontDescFormat=2
|
||||
fourChnlPacked=0
|
||||
textureFormat=png
|
||||
textureCompression=0
|
||||
alphaChnl=1
|
||||
redChnl=0
|
||||
greenChnl=0
|
||||
blueChnl=0
|
||||
invA=0
|
||||
invR=0
|
||||
invG=0
|
||||
invB=0
|
||||
|
||||
# outline
|
||||
outlineThickness=1
|
||||
|
||||
# selected chars
|
||||
chars=32-127
|
||||
|
||||
# imported icon images
|
8
raw/nds12/license.txt
Normal file
@ -0,0 +1,8 @@
|
||||
License for NDS12 font
|
||||
|
||||
This font was created by Caveras with FontStruct and is licensed
|
||||
under a Creative Commons Attribution Non-commercial Share Alike
|
||||
license.
|
||||
|
||||
http://fontstruct.com/fontstructors/caveras
|
||||
http://creativecommons.org/licenses/by-nc-sa/3.0/
|
BIN
raw/nds12/nds12.fnt
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
raw/nds12/nds12.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
raw/nds12/onds12.fnt
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
raw/nds12/onds12_0.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
29
raw/nds12/readme.txt
Normal file
@ -0,0 +1,29 @@
|
||||
NDS12 by Caveras - based on the original system font of the Nintendo DS.
|
||||
|
||||
The font file in this archive was created by Caveras using FontStruct -
|
||||
the free, online font-building tool. This font has a homepage where this
|
||||
archive and other versions may be found:
|
||||
http://fontstruct.com/fontstructors/caveras
|
||||
|
||||
It is also distributed over Caveras' website: http://www.caveras.net
|
||||
|
||||
Try FontStruct at http://fontstruct.com - It’s easy and it’s fun.
|
||||
|
||||
NOTE FOR FLASH USERS: FontStruct fonts (FontStructions) are optimized for
|
||||
Flash. The font in this archive is a pixel font and best displayed at a
|
||||
font-size of 16 and multiples of this number.
|
||||
|
||||
FontStruct is sponsored by FontShop. Visit them at http://fontshop.com.
|
||||
FontShop is the original independent font retailer. We’ve been around since
|
||||
the dawn of digital type. Whether you need the right font or need to create
|
||||
the right font from scratch, let our 23 years of experience work for you.
|
||||
|
||||
FontStruct is copyright © 2016 Rob Meek
|
||||
|
||||
LEGAL NOTICE:
|
||||
In using this font you must comply with the licensing terms described in the
|
||||
file “license.txt” included with this archive. If you redistribute the font
|
||||
file in this archive, it must be accompanied by all the other files from this
|
||||
archive, including this one.
|
||||
|
||||
Copyright © 2016 Caveras / Cliff Modes.
|
133
src/sillysagiri/BMF.java
Normal file
@ -0,0 +1,133 @@
|
||||
package sillysagiri;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
import javax.microedition.lcdui.Graphics;
|
||||
import javax.microedition.lcdui.Image;
|
||||
|
||||
public class BMF {
|
||||
public static final byte ID = 0;
|
||||
public static final byte X = 1;
|
||||
public static final byte Y = 2;
|
||||
public static final byte WIDTH = 3;
|
||||
public static final byte HEIGHT = 4;
|
||||
public static final byte XOFF = 5;
|
||||
public static final byte YOFF = 6;
|
||||
public static final byte XADV = 7;
|
||||
|
||||
public Image img;
|
||||
public short fontSize;
|
||||
public short lineHeight;
|
||||
public short base;
|
||||
public short[][] chars;
|
||||
|
||||
public BMF(String path_img, String path_fnt) throws Exception
|
||||
{
|
||||
img = Image.createImage(path_img);
|
||||
|
||||
InputStream in = this.getClass().getResourceAsStream(path_fnt);
|
||||
byte[] header = new byte[4];
|
||||
|
||||
int size_read = in.read(header, 0, 4);
|
||||
if (!(size_read == 4) &&
|
||||
!(header[0] != 'B') &&
|
||||
!(header[1] != 'M') &&
|
||||
!(header[2] != 'F') &&
|
||||
!(header[3] != 3))
|
||||
{
|
||||
throw new Exception("File is not bmf " + path_fnt);
|
||||
}
|
||||
|
||||
header = null;
|
||||
byte[] buffer = new byte[20];
|
||||
while(size_read != -1)
|
||||
{
|
||||
int length;
|
||||
int type;
|
||||
|
||||
// read type & length
|
||||
size_read = in.read(buffer, 0, 5);
|
||||
if (size_read == -1) break;
|
||||
|
||||
// get type from buffer
|
||||
type = buffer[0];
|
||||
|
||||
// convert byte into int;
|
||||
length = ((buffer[4] & 0xFF) << 24) |
|
||||
((buffer[3] & 0xFF) << 16) |
|
||||
((buffer[2] & 0xFF) << 8) |
|
||||
(buffer[1] & 0xFF);
|
||||
|
||||
switch (type) {
|
||||
case 1: // info block
|
||||
{
|
||||
// font size is signed
|
||||
size_read = in.read(buffer, 0, 2);
|
||||
fontSize = (short)( ((buffer[1]) << 8) |
|
||||
(buffer[0]) );
|
||||
|
||||
// skip the rest
|
||||
in.skip(length - 2);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: // common block
|
||||
{
|
||||
size_read = in.read(buffer, 0, 4);
|
||||
lineHeight = (short)( ((buffer[1] & 0xFF) << 8) |
|
||||
(buffer[0]) & 0xFF);
|
||||
|
||||
base = (short)( ((buffer[3] & 0xFF) << 8) |
|
||||
(buffer[2]) & 0xFF);
|
||||
|
||||
// skip the rest
|
||||
in.skip(length - 4);
|
||||
}
|
||||
break;
|
||||
|
||||
case 3: // pages block
|
||||
{
|
||||
// skip pages
|
||||
in.skip(length);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4: // chars block
|
||||
{
|
||||
chars = new short[96][8];
|
||||
int count = length/20;
|
||||
for (int i=0; i<count; i++)
|
||||
{
|
||||
size_read = in.read(buffer, 0, 20);
|
||||
int id = ((buffer[3] & 0xFF) << 24) |
|
||||
((buffer[2] & 0xFF) << 16) |
|
||||
((buffer[1] & 0xFF) << 8) |
|
||||
(buffer[0] & 0xFF);
|
||||
|
||||
// TODO: handle more glyph
|
||||
if (id < 32 || id > 128) continue;
|
||||
|
||||
chars[id-32][ID] = (short)(((buffer[1] & 0xFF) << 8) | (buffer[0] & 0xFF));
|
||||
chars[id-32][X] = (short)(((buffer[5] & 0xFF) << 8) | (buffer[4] & 0xFF));
|
||||
chars[id-32][Y] = (short)(((buffer[7] & 0xFF) << 8) | (buffer[6] & 0xFF));
|
||||
chars[id-32][WIDTH] = (short)(((buffer[9] & 0xFF) << 8) | (buffer[8] & 0xFF));
|
||||
chars[id-32][HEIGHT] = (short)(((buffer[11] & 0xFF) << 8) | (buffer[10] & 0xFF));
|
||||
chars[id-32][XOFF] = (short)((buffer[13] << 8) | buffer[12]);
|
||||
chars[id-32][YOFF] = (short)((buffer[15] << 8) | buffer[14]);
|
||||
chars[id-32][XADV] = (short)((buffer[17] << 8) | buffer[16]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Draw(Graphics g, String str, int x, int y)
|
||||
{
|
||||
short[] cursor = new short[]{0, 0};
|
||||
}
|
||||
|
||||
}
|
29
src/sillysagiri/scene/DeathError.java
Normal file
@ -0,0 +1,29 @@
|
||||
package sillysagiri.scene;
|
||||
|
||||
import javax.microedition.lcdui.Graphics;
|
||||
|
||||
import sillysagiri.Scene;
|
||||
import sillysagiri.Utils;
|
||||
|
||||
public class DeathError extends Scene {
|
||||
Exception e;
|
||||
public DeathError(Exception e)
|
||||
{
|
||||
super();
|
||||
this.e = e;
|
||||
}
|
||||
|
||||
public void Preload() {
|
||||
}
|
||||
|
||||
public void Destroy() {
|
||||
}
|
||||
|
||||
public void Update(long dt, Graphics g) {
|
||||
// TODO: improve death message
|
||||
Utils.Clear_Screen(g, 255, 255, 255);
|
||||
g.setColor(255, 0 , 0);
|
||||
g.drawString(e.toString(), 0, 0, Graphics.LEFT|Graphics.TOP);
|
||||
}
|
||||
|
||||
}
|
79
src/sillysagiri/scene/MainMenu.java
Normal file
@ -0,0 +1,79 @@
|
||||
package sillysagiri.scene;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import javax.microedition.lcdui.Graphics;
|
||||
import javax.microedition.lcdui.Image;
|
||||
|
||||
import sillysagiri.BMF;
|
||||
import sillysagiri.Scene;
|
||||
import sillysagiri.Utils;
|
||||
|
||||
public class MainMenu extends Scene {
|
||||
private long counter = 0;
|
||||
private int state = 0;
|
||||
|
||||
private Image img_bg;
|
||||
private Image img_bandai;
|
||||
private Image img_ez;
|
||||
|
||||
public void Preload() {
|
||||
try {
|
||||
BMF bmf = new BMF("/silly/bmf/nds12.png", "/silly/bmf/nds12.fnt");
|
||||
Image img_loop = Image.createImage("/m_2.png");
|
||||
img_bandai = Image.createImage("/c_0.png");
|
||||
img_ez = Image.createImage("/pEZ.png");
|
||||
|
||||
int loopCount = (int)Math.ceil((float)Utils.GetScreenHeight()/img_loop.getHeight());
|
||||
|
||||
img_bg = Image.createImage(img_loop.getWidth(), Utils.GetScreenHeight());
|
||||
Utils.Clear_Image(img_bg, 255, 108, 0);
|
||||
Graphics g_bg = img_bg.getGraphics();
|
||||
|
||||
for (int i = 0; i<loopCount; i++)
|
||||
g_bg.drawImage(img_loop, 0, i*img_loop.getHeight(), Graphics.LEFT | Graphics.TOP);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
sagiri.Set_Scene(new DeathError(e));
|
||||
}
|
||||
}
|
||||
|
||||
public void Destroy() {
|
||||
}
|
||||
|
||||
public void Update(long dt, Graphics g) {
|
||||
counter += dt;
|
||||
|
||||
switch (state) {
|
||||
case 0:
|
||||
{
|
||||
Utils.Clear_Screen(g, 255, 108, 0);
|
||||
g.drawImage(img_bg, 0, 0, Graphics.TOP | Graphics.LEFT);
|
||||
|
||||
g.drawImage(
|
||||
img_bandai,
|
||||
Utils.GetScreenWidth()/2, Utils.GetScreenHeight()/2,
|
||||
Graphics.VCENTER | Graphics.HCENTER);
|
||||
|
||||
if (counter >= 600) counter = 0;
|
||||
if (counter < 400)
|
||||
g.drawImage(
|
||||
img_ez,
|
||||
Utils.GetScreenWidth()/2, (int)(Utils.GetScreenHeight()*0.75),
|
||||
Graphics.VCENTER | Graphics.HCENTER);
|
||||
|
||||
if (sagiri.input.IsKeyDownAny())
|
||||
{
|
||||
counter = 0;
|
||||
state = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|