mzakd.cool.coocan.jp/mz-memo…
mz700winのサイトで公開されていたファイルを再配布しています。
誤ってポストを消してしまったので、固定用に再ポスト
m(_ _)m
開発:BASICトランスパイラー。mz-700のキャラグラに変換するBASICプログラムだと遅いのでネイティブにFILETR()に組み込んだ。キャラグラ、セミグラ、カラーのみの選択ができバイナリ出力(配列)でMZT,MZFにも描き出せるように。フォントファイルも指定可能。フォントファイル省略時はセミグラフィックになる。
10 R$=LOADIMAGE(ARGS{1},src())
20 IF R$="" THEN END
25 Font$=ARGS{2}
30 a()=FILTER("mz700キャラグラ変換",src(),"文字と色","画像",40,25,Font$)
40 b()=FILTER("mz700キャラグラ変換",src(),"文字のみ","画像",40,25,Font$)
50 c()=FILTER("mz700キャラグラ変換",src(),"色のみ","画像",40,25,Font$)
60 SAVEIMAGE "out/mz700_text_color.png",a()
70 SAVEIMAGE "out/mz700_text_only.png",b()
80 SAVEIMAGE "out/mz700_color_only.png",c()
NEON PINBALL v3.21 MZ-1500
リポスト、いいね、ありがとうございます。
動画撮ってみました。
上の中央のロボットの顔をボールが通過するとロボスロットが回り、数字が揃うとボーナスステージに入ります。
ゲームの難易度は低いのに、ボーナスステージに行く難易度だけ高いという・・(^^;
開発:BASICトランスパイラー。字形はかなり苦しいけどUnicodeフォントからmz-700の文字データを生成するBASICプログラム。比較しても似てない・・・けど、とりあえずということで・・・
maroon.dti.ne.jp/youkan/mz70…
【MZ-700互換近似フォント生成プログラム】
100 OPTION BASE 0
110 OPTION BINARY_ARRAY_TRIM OFF
120 DIM unicodeMap(511)
130 DIM fontData(4095)
135 DIM glyphScale(511)
140 GOSUB 10000
150 OutPath$="mz700_unifont_approx.bin"
160 PreviewPath$="mz700_unifont_approx_preview.png"
170 IF LEN(ARGS{})>=1 THEN OutPath$=ARGS{1}
180 IF LEN(ARGS{})>=2 THEN PreviewPath$=ARGS{2}
190 JPFont$=__HOMEDIR+"/Library/Fonts/unifont_jp-18.0.01.otf"
200 UpperFont$=__HOMEDIR+"/Library/Fonts/unifont_upper-18.0.01.otf"
210 IF LEN(ARGS{})>=3 THEN JPFont$=ARGS{3}
220 IF LEN(ARGS{})>=4 THEN UpperFont$=ARGS{4}
280 SCREEN preview(),1088,544 FILL 0,0,0,255
300 FOR Code=0 TO 511
310 U=unicodeMap(Code)
320 IF U>0 THEN GOSUB 1000
330 NEXT
335 fontData(4095)=0
340 PRINTBIN #OutPath$,fontData()
350 IF __LAST_PRINT_ERROR<>"" THEN PRINT "フォントデータの保存に失敗しました: ";__LAST_PRINT_ERROR:END
360 SavedPreview$=SAVEIMAGE(PreviewPath$,preview())
370 IF SavedPreview$="" THEN PRINT "確認画像の保存に失敗しました":END
380 PRINT "生成完了: ";OutPath$
390 PRINT "サイズ: ";SIZE(fontData());" bytes"
400 PRINT "確認画像: ";SavedPreview$
410 PRINT "注意: MZ-700実機CGROMの複製ではなく、GNU Unifontから生成した互換近似フォントです。"
420 END
1000 IF U>65535 THEN WantedFont$=UpperFont$ ELSE WantedFont$=JPFont$
1010 SCREEN glyph(),16,32 FILL 0,0,0,255 FORCE
1020 DRAW "FONT",WantedFont$,"Regular",16,[255,255,255]
1030 DRAW "ANTIALIAS",glyph(),0
1040 DRAW "TEXT",glyph(),0,0,CHR(U)
1050 MaxX=-1:BottomY=-1
1060 FOR SY=0 TO 31
1070 FOR SX=0 TO 15
1080 POINT glyph(),SX,SY,R,G,B,A
1090 IF R+G+B>=384 AND SX>MaxX THEN MaxX=SX
1100 IF R+G+B>=384 AND SY>BottomY THEN BottomY=SY
1110 NEXT
1120 NEXT
1130 SourceWidth=8
1140 IF glyphScale(Code)=2 THEN SourceWidth=16
1150 IF MaxX+1>SourceWidth THEN SourceWidth=MaxX+1
1160 SourceHeight=16
1170 IF BottomY+1>SourceHeight THEN SourceHeight=BottomY+1
1180 BaseX=(Code MOD 32)*34
1190 BaseY=INT(Code/32)*34
1200 FOR OY=0 TO 7
1210 ByteValue=0
1220 StartY=INT(OY*SourceHeight/8)
1230 EndY=INT((OY+1)*SourceHeight/8)-1
1240 IF EndY<StartY THEN EndY=StartY
1250 FOR OX=0 TO 7
1260 StartX=INT(OX*SourceWidth/8)
1270 EndX=INT((OX+1)*SourceWidth/8)-1
1280 IF EndX<StartX THEN EndX=StartX
1290 PixelCount=0
1300 FOR SY=StartY TO EndY
1310 FOR SX=StartX TO EndX
1320 POINT glyph(),SX,SY,R,G,B,A
1330 IF R+G+B>=384 THEN PixelCount=PixelCount+1
1340 NEXT
1350 NEXT
1360 SampleCount=(EndX-StartX+1)*(EndY-StartY+1)
1370 PixelOn=0
1380 IF PixelCount>0 AND PixelCount*4>=SampleCount THEN PixelOn=1
1390 IF PixelOn=1 THEN ByteValue=ByteValue+POW(2,7-OX)
1400 FOR PY=0 TO 3
1410 FOR PX=0 TO 3
1420 IF PixelOn=1 THEN PSET preview(),BaseX+OX*4+PX,BaseY+OY*4+PY,255,255,255,255
1430 NEXT
1440 NEXT
1450 NEXT
1460 fontData(Code*8+OY)=ByteValue
1470 NEXT
1480 RETURN
10000 unicodeMap(0)=32
10010 unicodeMap(1)=65
10020 unicodeMap(2)=66
10030 unicodeMap(3)=67
10040 unicodeMap(4)=68
10050 unicodeMap(5)=69
10060 unicodeMap(6)=70
10070 unicodeMap(7)=71
10080 unicodeMap(8)=72
10090 unicodeMap(9)=73
10100 unicodeMap(10)=74
10110 unicodeMap(11)=75
10120 unicodeMap(12)=76
10130 unicodeMap(13)=77
10140 unicodeMap(14)=78
10150 unicodeMap(15)=79
10160 unicodeMap(16)=80
10170 unicodeMap(17)=81
10180 unicodeMap(18)=82
10190 unicodeMap(19)=83
10200 unicodeMap(20)=84
10210 unicodeMap(21)=85
10220 unicodeMap(22)=86
10230 unicodeMap(23)=87
10240 unicodeMap(24)=88
10250 unicodeMap(25)=89
10260 unicodeMap(26)=90
10270 unicodeMap(27)=9532
10280 unicodeMap(28)=9492
10290 unicodeMap(29)=9496
10300 unicodeMap(30)=9500
10310 unicodeMap(31)=9524
10320 unicodeMap(32)=48
10330 unicodeMap(33)=49
10340 unicodeMap(34)=50
10350 unicodeMap(35)=51
10360 unicodeMap(36)=52
10370 unicodeMap(37)=53
10380 unicodeMap(38)=54
10390 unicodeMap(39)=55
10400 unicodeMap(40)=56
10410 unicodeMap(41)=57
10420 unicodeMap(42)=45
10430 unicodeMap(43)=61
10440 unicodeMap(44)=59
10450 unicodeMap(45)=47
10460 unicodeMap(46)=46
10470 unicodeMap(47)=44
10480 unicodeMap(48)=129910
10490 unicodeMap(49)=129904
10500 unicodeMap(50)=129916
10510 unicodeMap(51)=129919
10520 unicodeMap(52)=129912
10530 unicodeMap(53)=129906
10540 unicodeMap(54)=129922
10550 unicodeMap(55)=9614
10560 unicodeMap(56)=129908
10570 unicodeMap(57)=129914
10580 unicodeMap(58)=9604
10590 unicodeMap(59)=9616
10600 unicodeMap(60)=9601
10610 unicodeMap(61)=9621
10620 unicodeMap(62)=9602
10630 unicodeMap(63)=129927
10640 unicodeMap(64)=8594
10650 unicodeMap(65)=9824
10660 unicodeMap(66)=9701
10670 unicodeMap(67)=9608
10680 unicodeMap(68)=9830
10690 unicodeMap(69)=8592
10700 unicodeMap(70)=9827
10710 unicodeMap(71)=9679
10720 unicodeMap(72)=9675
10730 unicodeMap(73)=63
10740 unicodeMap(74)=9688
10750 unicodeMap(75)=9581
10760 unicodeMap(76)=9582
10770 unicodeMap(77)=9699
10780 unicodeMap(78)=9698
10790 unicodeMap(79)=58
10800 unicodeMap(80)=8593
10810 unicodeMap(81)=60
10820 unicodeMap(82)=91
10830 unicodeMap(83)=9829
10840 unicodeMap(84)=93
10850 unicodeMap(85)=64
10860 unicodeMap(86)=9700
10870 unicodeMap(87)=62
10880 unicodeMap(88)=129932
10890 unicodeMap(89)=92
10900 unicodeMap(90)=9618
10910 unicodeMap(91)=9626
10920 unicodeMap(92)=9484
10930 unicodeMap(93)=9488
10940 unicodeMap(94)=9508
10950 unicodeMap(95)=9516
10960 unicodeMap(96)=960
10970 unicodeMap(97)=33
10980 unicodeMap(98)=34
10990 unicodeMap(99)=35
11000 unicodeMap(100)=36
11010 unicodeMap(101)=37
11020 unicodeMap(102)=38
11030 unicodeMap(103)=39
11040 unicodeMap(104)=40
11050 unicodeMap(105)=41
11060 unicodeMap(106)=43
11070 unicodeMap(107)=42
11080 unicodeMap(108)=9630
11090 unicodeMap(109)=9587
11100 unicodeMap(110)=9583
11110 unicodeMap(111)=9584
11120 unicodeMap(112)=9620
11130 unicodeMap(113)=9615
11140 unicodeMap(114)=129917
11150 unicodeMap(115)=129918
11160 unicodeMap(116)=129911
11170 unicodeMap(117)=129905
11180 unicodeMap(118)=9585
11190 unicodeMap(119)=9586
11200 unicodeMap(120)=129913
11210 unicodeMap(121)=129907
11220 unicodeMap(122)=9600
11230 unicodeMap(123)=9612
11240 unicodeMap(126)=9603
11250 unicodeMap(127)=129928
11260 unicodeMap(128)=8595
11270 unicodeMap(129)=12481
11280 unicodeMap(130)=12467
11290 unicodeMap(131)=12477
11300 unicodeMap(132)=12471
11310 unicodeMap(133)=12452
11320 unicodeMap(134)=12495
11330 unicodeMap(135)=12461
11340 unicodeMap(136)=12463
11350 unicodeMap(137)=12491
11360 unicodeMap(138)=12510
11370 unicodeMap(139)=12494
11380 unicodeMap(140)=12522
11390 unicodeMap(141)=12514
11400 unicodeMap(142)=12511
11410 unicodeMap(143)=12521
11420 unicodeMap(144)=12475
11430 unicodeMap(145)=12479
11440 unicodeMap(146)=12473
11450 unicodeMap(147)=12488
11460 unicodeMap(148)=12459
11470 unicodeMap(149)=12490
11480 unicodeMap(150)=12498
11490 unicodeMap(151)=12486
11500 unicodeMap(152)=12469
11510 unicodeMap(153)=12531
11520 unicodeMap(154)=12484
11530 unicodeMap(155)=12525
11540 unicodeMap(156)=12465
11550 unicodeMap(157)=12300
11560 unicodeMap(158)=12449
11570 unicodeMap(159)=12515
11580 unicodeMap(160)=12527
11590 unicodeMap(161)=12492
11600 unicodeMap(162)=12501
11610 unicodeMap(163)=12450
11620 unicodeMap(164)=12454
11630 unicodeMap(165)=12456
11640 unicodeMap(166)=12458
11650 unicodeMap(167)=12516
11660 unicodeMap(168)=12518
11670 unicodeMap(169)=12520
11680 unicodeMap(170)=12507
11690 unicodeMap(171)=12504
11700 unicodeMap(172)=12524
11710 unicodeMap(173)=12513
11720 unicodeMap(174)=12523
11730 unicodeMap(175)=12493
11740 unicodeMap(176)=12512
11750 unicodeMap(177)=12301
11760 unicodeMap(178)=12451
11770 unicodeMap(179)=12517
11780 unicodeMap(180)=12530
11790 unicodeMap(181)=12289
11800 unicodeMap(182)=12453
11810 unicodeMap(183)=12519
11820 unicodeMap(184)=12444
11830 unicodeMap(185)=12539
11840 unicodeMap(186)=12455
11850 unicodeMap(187)=12483
11860 unicodeMap(188)=12443
11870 unicodeMap(189)=12290
11880 unicodeMap(190)=12457
11890 unicodeMap(191)=12540
11900 unicodeMap(192)=129203
11910 unicodeMap(193)=129207
11920 unicodeMap(194)=129205
11930 unicodeMap(195)=129206
11940 unicodeMap(196)=129204
11950 unicodeMap(197)=127351
11960 unicodeMap(198)=127346
11970 unicodeMap(199)=128760
11980 unicodeMap(200)=117761
11990 unicodeMap(201)=117760
12000 unicodeMap(202)=129989
12010 unicodeMap(203)=117762
12020 unicodeMap(204)=117763
12030 unicodeMap(205)=117764
12040 unicodeMap(206)=9787
12050 unicodeMap(207)=9786
12060 unicodeMap(208)=26085
12070 unicodeMap(209)=26376
12080 unicodeMap(210)=28779
12090 unicodeMap(211)=27700
12100 unicodeMap(212)=26408
12110 unicodeMap(213)=37329
12120 unicodeMap(214)=22303
12130 unicodeMap(215)=29983
12140 unicodeMap(216)=24180
12150 unicodeMap(217)=26178
12160 unicodeMap(218)=20998
12170 unicodeMap(219)=31186
12180 unicodeMap(220)=20870
12190 unicodeMap(221)=165
12200 unicodeMap(222)=163
12210 unicodeMap(223)=128013
12220 unicodeMap(224)=117765
12230 unicodeMap(225)=117766
12240 unicodeMap(226)=117767
12250 unicodeMap(227)=117769
12260 unicodeMap(228)=117771
12270 unicodeMap(229)=117772
12280 unicodeMap(230)=117773
12290 unicodeMap(231)=117775
12300 unicodeMap(232)=117774
12310 unicodeMap(233)=117776
12320 unicodeMap(234)=117777
12330 unicodeMap(235)=117778
12340 unicodeMap(236)=117779
12350 unicodeMap(237)=117780
12360 unicodeMap(238)=117770
12370 unicodeMap(239)=129936
12380 unicodeMap(241)=117793
12390 unicodeMap(242)=117794
12400 unicodeMap(243)=117795
12410 unicodeMap(244)=117796
12420 unicodeMap(245)=117797
12430 unicodeMap(246)=117798
12440 unicodeMap(247)=117799
12450 unicodeMap(248)=117800
12460 unicodeMap(249)=117801
12470 unicodeMap(250)=117802
12480 unicodeMap(251)=117803
12490 unicodeMap(252)=117804
12500 unicodeMap(253)=117805
12510 unicodeMap(254)=117806
12520 unicodeMap(255)=117807
12530 unicodeMap(257)=97
12540 unicodeMap(258)=98
12550 unicodeMap(259)=99
12560 unicodeMap(260)=100
12570 unicodeMap(261)=101
12580 unicodeMap(262)=102
12590 unicodeMap(263)=103
12600 unicodeMap(264)=104
12610 unicodeMap(265)=105
12620 unicodeMap(266)=106
12630 unicodeMap(267)=107
12640 unicodeMap(268)=108
12650 unicodeMap(269)=109
12660 unicodeMap(270)=110
12670 unicodeMap(271)=111
12680 unicodeMap(272)=112
12690 unicodeMap(273)=113
12700 unicodeMap(274)=114
12710 unicodeMap(275)=115
12720 unicodeMap(276)=116
12730 unicodeMap(277)=117
12740 unicodeMap(278)=118
12750 unicodeMap(279)=119
12760 unicodeMap(280)=120
12770 unicodeMap(281)=121
12780 unicodeMap(282)=122
12790 unicodeMap(374)=117791
12800 unicodeMap(375)=117792
12810 unicodeMap(385)=12385
12820 unicodeMap(386)=12371
12830 unicodeMap(387)=12381
12840 unicodeMap(388)=12375
12850 unicodeMap(389)=12356
12860 unicodeMap(390)=12399
12870 unicodeMap(391)=12365
12880 unicodeMap(392)=12367
12890 unicodeMap(393)=12395
12900 unicodeMap(394)=12414
12910 unicodeMap(395)=12398
12920 unicodeMap(396)=12426
12930 unicodeMap(397)=12418
12940 unicodeMap(398)=12415
12950 unicodeMap(399)=12425
12960 unicodeMap(400)=12379
12970 unicodeMap(401)=12383
12980 unicodeMap(402)=12377
12990 unicodeMap(403)=12392
13000 unicodeMap(404)=12363
13010 unicodeMap(405)=12394
13020 unicodeMap(406)=12402
13030 unicodeMap(407)=12390
13040 unicodeMap(408)=12373
13050 unicodeMap(409)=12435
13060 unicodeMap(410)=12388
13070 unicodeMap(411)=12429
13080 unicodeMap(412)=12369
13090 unicodeMap(414)=12353
13100 unicodeMap(415)=12419
13110 unicodeMap(416)=12431
13120 unicodeMap(417)=12396
13130 unicodeMap(418)=12405
13140 unicodeMap(419)=12354
13150 unicodeMap(420)=12358
13160 unicodeMap(421)=12360
13170 unicodeMap(422)=12362
13180 unicodeMap(423)=12420
13190 unicodeMap(424)=12422
13200 unicodeMap(425)=12424
13210 unicodeMap(426)=12411
13220 unicodeMap(427)=12408
13230 unicodeMap(428)=12428
13240 unicodeMap(429)=12417
13250 unicodeMap(430)=12427
13260 unicodeMap(431)=12397
13270 unicodeMap(432)=12416
13280 unicodeMap(434)=12355
13290 unicodeMap(435)=12421
13300 unicodeMap(436)=12434
13310 unicodeMap(438)=12357
13320 unicodeMap(439)=12423
13330 unicodeMap(442)=12359
13340 unicodeMap(443)=12387
13350 unicodeMap(446)=12361
14000 glyphScale(129)=2
14010 glyphScale(130)=2
14020 glyphScale(131)=2
14030 glyphScale(132)=2
14040 glyphScale(133)=2
14050 glyphScale(134)=2
14060 glyphScale(135)=2
14070 glyphScale(136)=2
14080 glyphScale(137)=2
14090 glyphScale(138)=2
14100 glyphScale(139)=2
14110 glyphScale(140)=2
14120 glyphScale(141)=2
14130 glyphScale(142)=2
14140 glyphScale(143)=2
14150 glyphScale(144)=2
14160 glyphScale(145)=2
14170 glyphScale(146)=2
14180 glyphScale(147)=2
14190 glyphScale(148)=2
14200 glyphScale(149)=2
14210 glyphScale(150)=2
14220 glyphScale(151)=2
14230 glyphScale(152)=2
14240 glyphScale(153)=2
14250 glyphScale(154)=2
14260 glyphScale(155)=2
14270 glyphScale(156)=2
14280 glyphScale(157)=2
14290 glyphScale(158)=2
14300 glyphScale(159)=2
14310 glyphScale(160)=2
14320 glyphScale(161)=2
14330 glyphScale(162)=2
14340 glyphScale(163)=2
14350 glyphScale(164)=2
14360 glyphScale(165)=2
14370 glyphScale(166)=2
14380 glyphScale(167)=2
14390 glyphScale(168)=2
14400 glyphScale(169)=2
14410 glyphScale(170)=2
14420 glyphScale(171)=2
14430 glyphScale(172)=2
14440 glyphScale(173)=2
14450 glyphScale(174)=2
14460 glyphScale(175)=2
14470 glyphScale(176)=2
14480 glyphScale(177)=2
14490 glyphScale(178)=2
14500 glyphScale(179)=2
14510 glyphScale(180)=2
14520 glyphScale(181)=2
14530 glyphScale(182)=2
14540 glyphScale(183)=2
14550 glyphScale(184)=2
14560 glyphScale(185)=2
14570 glyphScale(186)=2
14580 glyphScale(187)=2
14590 glyphScale(188)=2
14600 glyphScale(189)=2
14610 glyphScale(190)=2
14620 glyphScale(191)=2
14630 glyphScale(197)=2
14640 glyphScale(198)=2
14650 glyphScale(199)=2
14660 glyphScale(208)=2
14670 glyphScale(209)=2
14680 glyphScale(210)=2
14690 glyphScale(211)=2
14700 glyphScale(212)=2
14710 glyphScale(213)=2
14720 glyphScale(214)=2
14730 glyphScale(215)=2
14740 glyphScale(216)=2
14750 glyphScale(217)=2
14760 glyphScale(218)=2
14770 glyphScale(219)=2
14780 glyphScale(220)=2
14790 glyphScale(223)=2
14800 glyphScale(385)=2
14810 glyphScale(386)=2
14820 glyphScale(387)=2
14830 glyphScale(388)=2
14840 glyphScale(389)=2
14850 glyphScale(390)=2
14860 glyphScale(391)=2
14870 glyphScale(392)=2
14880 glyphScale(393)=2
14890 glyphScale(394)=2
14900 glyphScale(395)=2
14910 glyphScale(396)=2
14920 glyphScale(397)=2
14930 glyphScale(398)=2
14940 glyphScale(399)=2
14950 glyphScale(400)=2
14960 glyphScale(401)=2
14970 glyphScale(402)=2
14980 glyphScale(403)=2
14990 glyphScale(404)=2
15000 glyphScale(405)=2
15010 glyphScale(406)=2
15020 glyphScale(407)=2
15030 glyphScale(408)=2
15040 glyphScale(409)=2
15050 glyphScale(410)=2
15060 glyphScale(411)=2
15070 glyphScale(412)=2
15080 glyphScale(414)=2
15090 glyphScale(415)=2
15100 glyphScale(416)=2
15110 glyphScale(417)=2
15120 glyphScale(418)=2
15130 glyphScale(419)=2
15140 glyphScale(420)=2
15150 glyphScale(421)=2
15160 glyphScale(422)=2
15170 glyphScale(423)=2
15180 glyphScale(424)=2
15190 glyphScale(425)=2
15200 glyphScale(426)=2
15210 glyphScale(427)=2
15220 glyphScale(428)=2
15230 glyphScale(429)=2
15240 glyphScale(430)=2
15250 glyphScale(431)=2
15260 glyphScale(432)=2
15270 glyphScale(434)=2
15280 glyphScale(435)=2
15290 glyphScale(436)=2
15300 glyphScale(438)=2
15310 glyphScale(439)=2
15320 glyphScale(442)=2
15330 glyphScale(443)=2
15340 glyphScale(446)=2
20000 RETURN
【MZ-700互換近似フォント生成プログラム】
■目的
GNU Unifontの字形から、MZ-700互換の並びを持つ8×8ドット・512文字・4096バイトの
近似フォントデータを生成します。
これはMZ-700実機のCGROMを複製するプログラムではありません。
字形はGNU Unifontを8×8へ縮小して新たに生成するため、実機の字形とは異なります。
■必要なフォント
次の2つのフォントファイルを用意してください。
unifont_jp-18.0.01.otf (ファミリー名: Unifont-JP)
unifont_upper-18.0.01.otf (ファミリー名: Unifont Upper)
入手先:
unifoundry.com/unifont/
■実行例
./ex make_mz700_unifont_approx.bas
./make_mz700_unifont_approx
出力先を指定する場合:
./make_mz700_unifont_approx font.bin preview.png
フォントファイルのパスも指定する場合:
./make_mz700_unifont_approx font.bin preview.png jp.otf upper.otf
macOSでフォントパスを省略した場合は、次の場所を使用します。
~/Library/Fonts/unifont_jp-18.0.01.otf
~/Library/Fonts/unifont_upper-18.0.01.otf
フォント名ではなくOTFファイルを直接読み込むため、Font BookやOSのフォント一覧に
正しく表示されない場合でも生成できます。別の場所へ保存した場合は、第3・第4引数で
各ファイルのパスを指定してください。
■生成ファイル
mz700_unifont_approx.bin 4096バイトのフォントデータ
mz700_unifont_approx_preview.png 32列×16行の目視確認画像
確認画像は左上から表示コード0、1、2……511の順です。
各文字を4倍表示し、セル間に2ピクセルの間隔を設けています。
■変換方法
GNU Unifontは8または16ピクセル幅×16ピクセル高の字形です。
半角字形は横8ピクセル、全角字形は横16ピクセルを基準に8ピクセルへ変換します。
半角・全角の判定表はGNU Unifont 18.0.01の字送り幅から作成しています。
文字が基準領域を越えて描画された場合は、その部分を含むよう変換範囲を自動調整します。
縦方向も16ピクセルを基準とし、下にはみ出す字形は全体が入るよう自動調整します。
縮小領域の4分の1以上が点灯している場合に、出力側のピクセルを点灯します。
これにより、細い斜線やカタカナの1ドット線が縮小時に消えにくくなります。
Unicode対応表に定義されていない表示コードは空白になります。対応表に定義された
336文字については、指定した2つのGNU Unifont 18.0.01ファイルに字形が存在することを
確認しています。似た図形が連続する部分には、Legacy Computing Symbolsとして定義された
セミグラフィック用の字形が含まれます。
■ライセンスと出典
・GNU Unifont 18.0.01
SIL Open Font License 1.1 または GPL 2+(Font Embedding Exception付き)の
デュアルライセンスです。本生成物を第三者へ配布するときは、選択したライセンスの
条件に従ってください。
・表示コードとUnicodeコードポイントの対応
dogatana/mz700.ttf-experimental の map.json を使用しています。
map.jsonを含む当該リポジトリの該当コードはMIT Licenseです。
github.com/dogatana/mz700.tt…
・make_mz700_unifont_approx.bas
本ファイルはユーザーが実行する独立したBASIC2026プログラムです。
BASIC2026本体へフォントデータやGNU Unifont本体を組み込むものではありません。
AKD retweeted
すぎもとさん(@BGM)による #ゲムダン14 とTookatoブースのレポです! 大感謝😆
一応ここだけ訂正ですが、ゲムダンは先着順なのでご安心を!
君も東京ゲームダンジョンに行って勝手にホワイドボードにイラストを描こう!(勝手にゲムイラ) - 祝!MZ-700発売43周年ブログ 30th700.hatenablog.com/entry…
AKD retweeted
今日のMZ-741。
手前に開くパターンにフタをつけて、そのフタを後ろの支えに流用するように。
フタはほぼ乗ってるだけで固定はできていない。
まだスイッチ類とか基板とかが固定できておらず、手前側のヒンジのでっぱりのせいでちゃんと固定できていないなどの問題は残る。
開発:BASICトランスパイラー。画像をmz-700用のセミグラフィック+カラーに変換するプログラムを用意しました。
以下のURLからダウンロードできますが、先頭にhttp:を付けてください。https:ではないので注意してください。(X[Twitter]などでは自動的にhttpsに変換されてしまうので、このようにしています)
//www.openspc2.org/mz700/download/semigra20261108.zip
使い方はREADME.txtに書いてあります。バイナリは以下の環境のを同梱してあります。BASICの元のプログラムも同梱してありますので、HaikuOSなどPOSIX準拠のOSで自前でトランスパイル->バイナリ生成することができます。
興味のある人だけ、どうぞ。
AlpineLinux
FreeBSD15
macOS_Catalina
macOS_GoldenGate
macOS_HighSierra
macOS_Ventura
MacOSX_SnowLeopard
RaspberryPI_OS
Windows11
#retropc
AKD retweeted
昔の勝手移植。スキルが上がったので改めて作り直そう。
当然移植元は持ってますし、移植元プログラムをAIに丸投げなんてしてないですよ。
#MZ1500
開発:BASICトランスパイラー。画像を指定すると自動的にmz-700の画面サイズに調整して8色に変換してPNG形式とMZT(MZF)形式にするBASICプログラム。さすがに8色では厳しい。
100 OPTION BASE 0
110 R$=LOADIMAGE(ARGS{"1"},canvas())
120 IF R$="" THEN PRINT "読み込みエラー":END
130 R$=LOADIMAGE("palette700.png",colorCanvas())
140 IF R$="" THEN PRINT "パレットデータ読み込みエラー":END
150 pal()=IMAGE("PALETTE",colorCanvas(),8)
160 IMAGE("リサイズ",canvas(),"長辺",40)
170 IMAGE("切り抜き",canvas(),0,0,40,25)
180 FILTER("減色",canvas(),pal(),"なし")
190 R$=SAVEIMAGE("semi.png",canvas())
200 IF R$="" THEN PRINT "保存エラー":END
290 DIM atb(999)' mz-700のカラーアトリビュートデータを格納
300 FOR Y=0 TO 24
310 FOR X=0 TO 39
320 POINT canvas(),X,Y,R,G,B,A
330 R=R & 1:G=G & 1:B=B & 1
340 atb(Y*40+X)=B | (R*2) | (G*4)
350 NEXT
360 NEXT
800 result{}=ASSEMBLE("Z80",data(),&H2000) << "ENDASM"
LD HL,ATB_DATA
LD DE,$D800
LD BC,1000
LDIR
JP $00AD ' 00ADのホットスタートへジャンプ
ATB_DATA:
ENDASM
810 ARRAY("連結",data(),atb())
820 Result$=SAVEMZT("atb.mzf",data(),"ATB.bin",&H2000,&H2000)


































