2010年9月アーカイブ




黙々整備中。今日は腰上まで。特に問題はなし。



昨日のロガーデータ。ノイズがひどいけれど、ここ最近のパッとしない走りの 典型だ。全コーナーで3-4km/h上乗せしないと...。



筑波行ってきました。



入念に準備運動をして(歳をとるごとに準備運動の時間が長くなっていく..)A1 は9:00から。気温は23℃と快適過ぎる。キャブはMJ160といつもより思いっきり 絞って、ファイナルは15:35といつも(15:34)より思いっきりショートにしてみ た。プラグが弱ってきているようでロガーのノイズがひどくラップはわからな かったけれど、E/Gはただ廻ってるだけの感。ファイナルは意外に走れなくもな い感じ。でもやっぱりショート過ぎか。ショートにしても17:39あたりかな。 今日は小寺選手が来ていたので並走して、緊張感もって30分走り切りました。
二本目はA2 11:00から。MJは無難目の165にファイナルも15:34に。気持ちこっ ちの方がトルクあるような?やっぱりPWK33は多少振ったところで何も変わらな いね。変わるとこまで振ると走らなくなる。
ファイナルもやっぱりこっちの方が落ち着く。A2はCRF150Rとおぼしきマシンが 走っていて、2回ほど頑張ってついていこうとするも振り切られ。バックストレッ チの感じだと、パワー的にはどっこいどっこいかな。

今年1セット目のタイヤはついにA2の走行で終了。YCXで持ちがいいといっても 最後はズル剥けて終わり。
久々に走って体中の錆びが落ちたような爽快感。運動不足です。

88E/G

8:50 D.alt. 322m 22.5℃ 70.1% 1014.8hPa 晴れ
15:35
4l 残 1.5l
2.5枚 65℃
MJ160

10:45 D.alt. 439m 26.0℃ 55.4% 1014.7hPa 晴れ
3.5l
2枚60℃



FF14 スクリプトのファイル名のデコードはこんな感じかな。数字まわりがちょっ
と違うかも。

$ ls
0p635                     729s9                     nvsy6
1q5x                      7vxx9w6                   rlrq5x
39x569q9                  7vxx9w6658p335s           rq9q1797qvs.san
3svpu                     97qvs89r57y9rr.le.lpb     rq9qpr
3yv89y_p.le.lpb           97qvs89r57y9rr_p.le.lpb   tp5rq
61s57qvs                  9s59
658p3                     n1635q
$ ls |sed y/0123456789abcdefghijklmnopqrstuvwxyz/jihgfedcba9876543210zyxwvutsrqponmlk/
judge
item
gamedata
group
global_u.y5.yu8
director
debug
chara
command
commanddebugger
actorbaseclass.y5.yu8
actorbaseclass_u.y5.yu8
area
widget
world
system
staticactor.r9w
status
quest
$ 
現状、FF14ではターゲットに<t>,<st>,<me>しか使えない。これが結 構プレイしにくい。ゲーム性のために意図的なものかなとも思っていたのだけ どwidget/desktopwidget_connectorを見ると
[059] add        7   7   262  ; 1
[060] settable   6   7   8  
[061] jmp        25           ; to [87]
[062] gettable   14  2   13 
[063] eq         1   14  273  ; "<st>", to [65] if false
[064] jmp        9            ; to [74]
[065] gettable   14  2   13 
[066] eq         1   14  274  ; "<stpc>", to [68] if false
[067] jmp        6            ; to [74]
[068] gettable   14  2   13 
[069] eq         1   14  275  ; "<stnpc>", to [71] if false
[070] jmp        3            ; to [74]
[071] gettable   14  2   13 
[072] eq         0   14  276  ; "<stpt>", to [74] if true
[073] jmp        5            ; to [79]
[074] eq         1   9   266  ; nil, to [76] if false
[075] jmp        11           ; to [87]
[076] add        7   7   262  ; 1
[077] settable   6   7   9  

便利なサブターゲットを実装しようとしていた形跡が。カツカツなのかな...。


FF14、VIT→HPとMND→MPの実測データです。(Oβ含む)
剣6 Phys13
VIT	57	49	42
HP	868	868	868

幻8 Phys13
VIT	57	49	42	43	44(*)	45
HP	586	586	569	577	586	586

幻8 Phys13
MND	14	15	16	17	18	19	20	21	22	23
MP	368	377	386	395	404	413	422	431	440	449
MND	24	25	26	27	28	29	30	31	32	33
MP	458	467	476	485	495	504	513	522	531	540
MND	34	35	36	37	38	39	40	41	42	43
MP	549	558	567	576	585	594	603	612	621	630
MND	44	45(*)	46	47	48
MP	639	648	648

剣3 Phys 5
VIT	29	30	31	32	33	34(*)	35
HP	700	715	731	746	761	776	776


剣3 Phys 8
VIT	30	31	32	33	34(*)	35
HP	723	739	754	769	784	784
MND	14	31	32	33	34(*)	35
MP	169	261	266	271	276	276

剣4 Phys 8
VIT	36	37(*)	38	39
HP	790	805	805	805

幻3 Phys 9
MND	29	30	31	32	33	34	35	36(*)	37
MP	463	472	482	492	502	512	520	530	530

幻6 Phys 11
VIT	40	41(*)	42
HP	533	542	542
MND	40(*)	41
MP	566	566

剣7 Phys 12
VIT	42	43
HP	897	912


Rank	3	4	5	6	7	8
Cap	34-36	37		40-41		44-45

Fighter: HP/VIT = 16,	MP/MND = 
Sorcerer:HP/VIT = 8,	MP/MND = 9


xウォルナット		VIT+1->HP+9
oブラッドガーラント+2	PIE+1 MP+26
x大栗鼠の肉		VIT+1->HP+9
oo山羊乳+2		?
x土竜の肉		STR+1
x大鳩の笹身		STR+1
oアリゲーターベア	PIE+1

FF14、バフ,回復かけあって修錬値を稼ぐやつ、スキルランクだけあげてもフィ ジカルレベル上げなくちゃHP,MPを増やせないので結構微妙だと思うんだけど どうなんだろう。装備適正とかもあるし。
FF14のスクリプトは最初の13byteスキップして、マクロと同じスクランブルを 外してChunkSpy.luaで見ることができる。ふーんと眺めていたら、
.const  "assert"  ; 2
.const  "処理時間表示を意図的に切ることはできません。"  ; 3
.const  "皆の足を引っ張っているようなものをコミットすることに"  ; 4
.const  "無頓着な人が多いから、"  ; 5
.const  "わざわざ表示してるのですよ!"  ; 6
うわ〜。ドキドキした。


テーブルソー集塵箱、接着が済んだところで側面をカット。



上面合わせのゲタにはめて、これも木工ボンドとピンタッカで固定。

適当に缶スプレーで塗装。

完成。結構手間がかかった。

これでついに木工ワークステーションが完成。



テーブルソー集塵箱、接着が済んだところで側面をカット。



上面合わせのゲタにはめて、これも木工ボンドとピンタッカで固定。

適当に缶スプレーで塗装。

完成。結構手間がかかった。

これでついに木工ワークステーションが完成。



テーブルソー集塵箱組みたて。今回はガムテープでごまかしたけれど、ストレッチフィルムで固定するといいのかもしれない。


内側はパテ埋め。これ、汎用の集塵ファンネルにつかえないかなと試してみた ところ、うちのブロワーでは吐出量が少な過ぎて使えなさそう。後から排気を あててプッシュプルにすればなんとかいけそうな気もしなくはないかな。でも そこまでの部屋の広さはない。



何故か一本だけよくできたナスを収穫。まだ花は咲いてるけれど、収穫できる
だろうか?



テーブルソー集塵箱は漏斗の部分は切削終了。設計図で一箇所勘違いしていて ちょっと合いが悪くなってしまった。

組み立ての練習。木工用ボンドとピンタッカで。がっちりクランプするという ことができないので組み立てもなかなか難しい。

短辺を69度に切るのはテーブルソーで。角度計を新しく導入しました。



鉄角パイプをガイドとして部材に固定する際、両側でクランプで狭む作業が結
構面倒なので、作業台組み込みのクランプをつけてみました。



40mmの鉄角パイプにφ18あけて、M16で作業台に締めつけ。板接ぎの接合面の直 角をルーター出す作業に便利じゃないかなと期待。

テーブルソーの集塵漏斗も、とりあえず手をつけてみることに。接合面はこん な感じで切削してみました。

48.7度が難しく(基本的に45度までだし)角度を出すためにトリマ本体を削って なんとか。

角度物は難しい。


正式サービスでも使えるようなので、そっと置いておきますよ。
FF14マクロ編集ツール


        



先日、フランスパンを食べていたら歯の間に狭まって、歯が折れた。渋々歯医
者に。荷重のかからない歯だからとりあえずパテ埋めだけで、ということすぐ
済んだ。よかった。

FF14Oβ、マクロの設定ファイルの書き込みまで作っておきました。キャッシュ 脳というか鳥頭なので、覚えてるうちにできる限りをファイルに落としておか ないと。
でももうFF14Oβ終わってるんだよね...。もっと早く作ればよかった。FF14Oβ ではマクロが必須なんだ。
FF14Oβについて、良い所だけ。悪い所は各所でさんざ言われている通り。
  • デスペナが3分の衰弱だけ。ライトプレイヤー、あるいはただ時間をかけて るだけのプレイヤーはデスペナに萎縮して思いきって遊ぶことができない事が 多いので、これはいい。ゲームの攻略を楽しんでいるプレイヤーなら遊ぶため ならデスペナなんて気にしないのだけど、そういう人はなかなかいない。
  • サーチがない。これは一見不便そうだけれど、プレイの幅が拡がる。とい うのは例えばログインしてLSのリストを見てもみんなが何をしてるかわからな い。とりあえず何してるか聞いてみることではじまる。これがサーチがあると、 なんとなく、「あぁ〜あそこであれやってるんだな」とそれだけでわかってし まって憶してしまいがち。いろいろな出会いのためにこの不便さは残して欲し い。
  • ランク差があっても(10以上)そこそこいい。このおかげで、ひょろっとパー ティに入れる。ただ気持ち的に、低いレベルだとソーサラーにジョブチェンジ してしまう。ケアルならランクに関係ないし。
  • ギルドリーブはパーティごとのインスタンスで取り合いがないので即ゲー ムをはじめれる。(取り合いのピリピリとした狩場で釣師をやるのは最高に楽し いものだけど。FF11じゃこれをやるために戦士やってパーティでは釣師を志願 してたもんだ)
  • ケアルがめちゃくちゃ大変。これはいいのか?と思われるけれど、ゲージを タゲれず直接キャラをターゲットしかできないということで、タゲりやすい場 所まで移動しながらケアルするというフットワークが楽しい。たぶんそのため に移動で詠唱中断にならないようにしたのだと思う。FF11のようなモグラ叩き ではなくなった。
  • いつでもジョブを変え、アビを変えれる。覚えてるアビならなんでも使え る(メインじゃないと効果は半減するけれど)。これはその場で最適化する戦略 がある。
軽く楽しめて、いろいろ試したいと思わせるバランスになってると思います。



FF14Oβ、マクロの設定ファイルmcr0を読み解いてみました。なんとなく調べは
じめたら楽しくなって一日やってしまった。スクランブルはこれで解けます。
最初の1byteはスクランブル後に0xffでいいのかな。uiファイル、cmbファイル
も同じ。

#include <sys/types.h>
#include <stdio.h>

int
scramble (int i)
{
  int j, k, upper, lower;

  upper = (i & 0xf0) >> 4;
  upper = 23 - upper;
  j = i & 0xf;
  k = (j / 4) * 4;
  lower = 3 - (j - k) + k;

  return ((upper << 4) | lower) & 0xff;
}

int
main ()
{
  int c;

  while ((c = getc (stdin)) != EOF)
    putc (scramble (c), stdout);

  return 0;
}
cmbファイル(キャラメーク設定)は
...
version,	0,	2147483647,	1
rsc_tribe,	0,	255,	2
appearancetype_size,	0,	2147483647,	4
appearancetype_voice,	0,	2147483647,	4
appearancetype_skin,	0,	2147483647,	13
appearancetype_hairstyle,	0,	2147483647,	7
appearancetype_haircolor,	0,	2147483647,	25
appearancetype_mesh,	0,	2147483647,	8
appearancetype_hairoption2,	0,	2147483647,	0
appearancetype_eyecolor,	0,	2147483647,	15
appearancetype_facetype,	0,	2147483647,	3
appearancetype_facebrow,	0,	2147483647,	3
appearancetype_faceeye,	0,	2147483647,	2
appearancetype_faceiris,	0,	2147483647,	0
appearancetype_facenose,	0,	2147483647,	3
appearancetype_facemouth,	0,	2147483647,	3
...
こんな感じで読めます。 マクロ設定ファイル(mcr0)は
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
//#define	STATIC	static
#define	STATIC
typedef int bool;
#define	TRUE	1
#define	FALSE	0

uint8_t scramble_table[] = {
  [0x00] = 0x73,
  [0x01] = 0x72,
  [0x02] = 0x71,
  [0x03] = 0x70,
  [0x04] = 0x77,
  [0x05] = 0x76,
  [0x06] = 0x75,
  [0x07] = 0x74,
  [0x08] = 0x7b,
  [0x09] = 0x7a,
  [0x0a] = 0x79,
  [0x0b] = 0x78,
  [0x0c] = 0x7f,
  [0x0d] = 0x7e,
  [0x0e] = 0x7d,
  [0x0f] = 0x7c,
  [0x10] = 0x63,
  [0x11] = 0x62,
  [0x12] = 0x61,
  [0x13] = 0x60,
  [0x14] = 0x67,
  [0x15] = 0x66,
  [0x16] = 0x65,
  [0x17] = 0x64,
  [0x18] = 0x6b,
  [0x19] = 0x6a,
  [0x1a] = 0x69,
  [0x1b] = 0x68,
  [0x1c] = 0x6f,
  [0x1d] = 0x6e,
  [0x1e] = 0x6d,
  [0x1f] = 0x6c,
  [0x20] = 0x53,
  [0x21] = 0x52,
  [0x22] = 0x51,
  [0x23] = 0x50,
  [0x24] = 0x57,
  [0x25] = 0x56,
  [0x26] = 0x55,
  [0x27] = 0x54,
  [0x28] = 0x5b,
  [0x29] = 0x5a,
  [0x2a] = 0x59,
  [0x2b] = 0x58,
  [0x2c] = 0x5f,
  [0x2d] = 0x5e,
  [0x2e] = 0x5d,
  [0x2f] = 0x5c,
  [0x30] = 0x43,
  [0x31] = 0x42,
  [0x32] = 0x41,
  [0x33] = 0x40,
  [0x34] = 0x47,
  [0x35] = 0x46,
  [0x36] = 0x45,
  [0x37] = 0x44,
  [0x38] = 0x4b,
  [0x39] = 0x4a,
  [0x3a] = 0x49,
  [0x3b] = 0x48,
  [0x3c] = 0x4f,
  [0x3d] = 0x4e,
  [0x3e] = 0x4d,
  [0x3f] = 0x4c,
  [0x40] = 0x33,
  [0x41] = 0x32,
  [0x42] = 0x31,
  [0x43] = 0x30,
  [0x44] = 0x37,
  [0x45] = 0x36,
  [0x46] = 0x35,
  [0x47] = 0x34,
  [0x48] = 0x3b,
  [0x49] = 0x3a,
  [0x4a] = 0x39,
  [0x4b] = 0x38,
  [0x4c] = 0x3f,
  [0x4d] = 0x3e,
  [0x4e] = 0x3d,
  [0x4f] = 0x3c,
  [0x50] = 0x23,
  [0x51] = 0x22,
  [0x52] = 0x21,
  [0x53] = 0x20,
  [0x54] = 0x27,
  [0x55] = 0x26,
  [0x56] = 0x25,
  [0x57] = 0x24,
  [0x58] = 0x2b,
  [0x59] = 0x2a,
  [0x5a] = 0x29,
  [0x5b] = 0x28,
  [0x5c] = 0x2f,
  [0x5d] = 0x2e,
  [0x5e] = 0x2d,
  [0x5f] = 0x2c,
  [0x60] = 0x13,
  [0x61] = 0x12,
  [0x62] = 0x11,
  [0x63] = 0x10,
  [0x64] = 0x17,
  [0x65] = 0x16,
  [0x66] = 0x15,
  [0x67] = 0x14,
  [0x68] = 0x1b,
  [0x69] = 0x1a,
  [0x6a] = 0x19,
  [0x6b] = 0x18,
  [0x6c] = 0x1f,
  [0x6d] = 0x1e,
  [0x6e] = 0x1d,
  [0x6f] = 0x1c,
  [0x70] = 0x03,
  [0x71] = 0x02,
  [0x72] = 0x01,
  [0x73] = 0x00,
  [0x74] = 0x07,
  [0x75] = 0x06,
  [0x76] = 0x05,
  [0x77] = 0x04,
  [0x78] = 0x0b,
  [0x79] = 0x0a,
  [0x7a] = 0x09,
  [0x7b] = 0x08,
  [0x7c] = 0x0f,
  [0x7d] = 0x0e,
  [0x7e] = 0x0d,
  [0x7f] = 0x0c,
  [0x80] = 0xf3,
  [0x81] = 0xf2,
  [0x82] = 0xf1,
  [0x83] = 0xf0,
  [0x84] = 0xf7,
  [0x85] = 0xf6,
  [0x86] = 0xf5,
  [0x87] = 0xf4,
  [0x88] = 0xfb,
  [0x89] = 0xfa,
  [0x8a] = 0xf9,
  [0x8b] = 0xf8,
  [0x8c] = 0xff,
  [0x8d] = 0xfe,
  [0x8e] = 0xfd,
  [0x8f] = 0xfc,
  [0x90] = 0xe3,
  [0x91] = 0xe2,
  [0x92] = 0xe1,
  [0x93] = 0xe0,
  [0x94] = 0xe7,
  [0x95] = 0xe6,
  [0x96] = 0xe5,
  [0x97] = 0xe4,
  [0x98] = 0xeb,
  [0x99] = 0xea,
  [0x9a] = 0xe9,
  [0x9b] = 0xe8,
  [0x9c] = 0xef,
  [0x9d] = 0xee,
  [0x9e] = 0xed,
  [0x9f] = 0xec,
  [0xa0] = 0xd3,
  [0xa1] = 0xd2,
  [0xa2] = 0xd1,
  [0xa3] = 0xd0,
  [0xa4] = 0xd7,
  [0xa5] = 0xd6,
  [0xa6] = 0xd5,
  [0xa7] = 0xd4,
  [0xa8] = 0xdb,
  [0xa9] = 0xda,
  [0xaa] = 0xd9,
  [0xab] = 0xd8,
  [0xac] = 0xdf,
  [0xad] = 0xde,
  [0xae] = 0xdd,
  [0xaf] = 0xdc,
  [0xb0] = 0xc3,
  [0xb1] = 0xc2,
  [0xb2] = 0xc1,
  [0xb3] = 0xc0,
  [0xb4] = 0xc7,
  [0xb5] = 0xc6,
  [0xb6] = 0xc5,
  [0xb7] = 0xc4,
  [0xb8] = 0xcb,
  [0xb9] = 0xca,
  [0xba] = 0xc9,
  [0xbb] = 0xc8,
  [0xbc] = 0xcf,
  [0xbd] = 0xce,
  [0xbe] = 0xcd,
  [0xbf] = 0xcc,
  [0xc0] = 0xb3,
  [0xc1] = 0xb2,
  [0xc2] = 0xb1,
  [0xc3] = 0xb0,
  [0xc4] = 0xb7,
  [0xc5] = 0xb6,
  [0xc6] = 0xb5,
  [0xc7] = 0xb4,
  [0xc8] = 0xbb,
  [0xc9] = 0xba,
  [0xca] = 0xb9,
  [0xcb] = 0xb8,
  [0xcc] = 0xbf,
  [0xcd] = 0xbe,
  [0xce] = 0xbd,
  [0xcf] = 0xbc,
  [0xd0] = 0xa3,
  [0xd1] = 0xa2,
  [0xd2] = 0xa1,
  [0xd3] = 0xa0,
  [0xd4] = 0xa7,
  [0xd5] = 0xa6,
  [0xd6] = 0xa5,
  [0xd7] = 0xa4,
  [0xd8] = 0xab,
  [0xd9] = 0xaa,
  [0xda] = 0xa9,
  [0xdb] = 0xa8,
  [0xdc] = 0xaf,
  [0xdd] = 0xae,
  [0xde] = 0xad,
  [0xdf] = 0xac,
  [0xe0] = 0x93,
  [0xe1] = 0x92,
  [0xe2] = 0x91,
  [0xe3] = 0x90,
  [0xe4] = 0x97,
  [0xe5] = 0x96,
  [0xe6] = 0x95,
  [0xe7] = 0x94,
  [0xe8] = 0x9b,
  [0xe9] = 0x9a,
  [0xea] = 0x99,
  [0xeb] = 0x98,
  [0xec] = 0x9f,
  [0xed] = 0x9e,
  [0xee] = 0x9d,
  [0xef] = 0x9c,
  [0xf0] = 0x83,
  [0xf1] = 0x82,
  [0xf2] = 0x81,
  [0xf3] = 0x80,
  [0xf4] = 0x87,
  [0xf5] = 0x86,
  [0xf6] = 0x85,
  [0xf7] = 0x84,
  [0xf8] = 0x8b,
  [0xf9] = 0x8a,
  [0xfa] = 0x89,
  [0xfb] = 0x88,
  [0xfc] = 0x8f,
  [0xfd] = 0x8e,
  [0xfe] = 0x8d,
  [0xff] = 0x8c,
};

STATIC FILE *open_file (const char *filename, size_t *sz);
STATIC bool parse_mcr (uint8_t *, size_t);
STATIC uint8_t scramble (int);
STATIC uint8_t *command_line (uint8_t *);
STATIC uint8_t *parse_slot (uint8_t *);
STATIC uint8_t *macro_icon (uint8_t *);
STATIC uint8_t *macro_name (uint8_t *);
STATIC uint8_t *header_check (uint8_t *);

int
main (int argc, char *argv[])
{
  FILE *loadfile;
  size_t mcr_size, sz;
  uint8_t *mcr_buf, *decoded_buf = 0;
  int i;

  if ((loadfile = open_file ("mcr0", &mcr_size)) == NULL)
    {
      return 0;
    }

  if ((mcr_buf = malloc (mcr_size)) == 0)
    {
      perror ("Can't allocate MCR file buffer.");
      goto error;
    }
  if ((decoded_buf = malloc (mcr_size)) == 0)
    {
      perror ("Can't allocate decoded MCR buffer.");
      goto error;
    }

  if ((sz = fread (mcr_buf, 1, mcr_size, loadfile)) != mcr_size)
    {
      perror ("Can't read MCR file.");
      goto error;
    }

  // Decode here.
  for (i = 0; i < sz; i++)
    decoded_buf[i] = scramble (mcr_buf[i]);

  // Parse all.
  if (!parse_mcr (decoded_buf, mcr_size))
    {
      fprintf (stderr, "*** parse failed ***\n");
    }

 error:
  if (mcr_buf)
    free (mcr_buf);
  if (decoded_buf)
    free (decoded_buf);

  fclose (loadfile);

  return 0;
}

STATIC bool
parse_mcr (uint8_t *buf, size_t sz)
{
  uint8_t *p;
  uint8_t c;
  int i;

  p = buf;
  for (i = 0; i < 100/*Alt 10 * 5 + Ctrl 10 * 5 */; i++)
    {
      printf ("-------------------------------------------------------------\n");
      // Find slot separater
      while ((c = *p++) != 0x54)
	printf("[%02x]\n", c);
      // Macro name
      p = macro_name (p);
      // header check
      if (!(p = header_check (p)))
	return FALSE;
      // Icon #
      p = macro_icon (p);
      // Parse slot all
      if (!(p = parse_slot (p)))
	return FALSE;
    }

  if (sz != (p - buf))
    {
      fprintf (stderr, "file size error\n");
      return FALSE;
    }

  return TRUE;
}

STATIC uint8_t *
header_check (uint8_t *p)
{
  uint8_t header_marker[] = { 0x49, 0x08, 0x00 };

  if (strncmp ((const char *)p, (const char *)header_marker,
	       sizeof header_marker) != 0)
    {
      fprintf (stderr, "Invalid header %s\n", p);
      return 0;
    }

  return p + sizeof header_marker;
}

STATIC uint8_t *
macro_name (uint8_t *p)
{
  uint8_t buf[0x100];
  size_t len;

  len = *(uint16_t *)p;	//LE
  p += sizeof (uint16_t);
  // name (utf-8)
  memcpy (buf, p, len);
  printf ("%s\n", buf);

  return p + len;
}

STATIC uint8_t *
macro_icon (uint8_t *p)
{
  int icon =  strtol ((const char *)p, NULL, 16);

  printf ("Icon=0x%x (%s)\n", icon, p);

  return p + 8;
}

STATIC uint8_t *
parse_slot (uint8_t *p)
{
  int i;

  for (i = 0; i < 10 /* 10 command line / slot */; i++)
    {
      if (!(p = command_line (p)))
	{
	  fprintf (stderr, "Invalid row separator\n");
	  return 0;
	}
    }

  return p;
}

STATIC uint8_t *
command_line (uint8_t *p)
{
  uint8_t buf[0x100];
  uint8_t c;
  int len;

  if ((c = *p++) != 0x4c)
    {
      return 0;
    }
  len = *(uint16_t *)p;	// LE
  p += sizeof (uint16_t);
  // user comamnd
  memcpy (buf, p, len);
  printf ("%s\n", buf);

  return p + len;
}

STATIC uint8_t
scramble (int i)
{
#if 1
  return scramble_table[i];
#else
  int j, k, upper, lower;

  upper = (i & 0xf0) >> 4;
  upper = 23 - upper;
  j = i & 0xf;
  k = (j / 4) * 4;
  lower = 3 - (j - k) + k;

  return ((upper << 4) | lower) & 0xff;
#endif
}

STATIC FILE *
open_file (const char *filename, size_t *sz)
{
  struct stat sb;
  FILE *f = NULL;

  fprintf (stderr, "Macro file [%s]", filename);
  if (stat (filename, &sb) == -1)
    {
      perror ("stat");
      return NULL;
    }
  *sz = sb.st_size;

  if ((f = fopen (filename, "r+")) == NULL)
    {
      fprintf (stderr, "Couldn't open input file %s\n", filename);
      return NULL;
    }
  fprintf (stderr, ": %zd byte\n", *sz);

  return f;
}

こんな感じ。
$ ./mcrdecode
Macro file [mcr0]: 7167 byte
-------------------------------------------------------------
[8c]
戦士
Icon=0x1 (0000001)
/equip main ウェザードグラディウス
/equipaction 2 打突
//equipaction 3 レッドロータス
/equipaction 4 ランパート
/equipaction 5
/equipaction 9 ストンスキン
/equipaction 8 ショックスパイク
/eauipaction 10 ケアル


-------------------------------------------------------------
採掘
Icon=0x2 (0000002)
/equip main ウェザードピック
/equipaction 2 ランドサーベイ
/equipaction 3 プロスペクト
/equipaction 4 剛速礫






-------------------------------------------------------------
幻術
Icon=0x7 (0000007)
/equip main ウェザードケーン
/equipaction 11 森閑
/equipaction 5 リポーズ
//equipaction 6 ウォータ
/equipaction 4 ファイア
//equipaction 8 ブリザド
//equipaction 9 エアロ
/equipaction 8 ショックスパイク
/equipaction 10 ケアル
/equipaction 9 ストンスキン
-------------------------------------------------------------
彫金
Icon=0x9 (0000009)
/equip main ウェザードチェーサーハンマー
/equipaction 2 剛速礫








-------------------------------------------------------------
...



集塵設備をもうちょっと。排気ポートのカナフレックスEE38をこの天井から吊
るしたVU40管に差しておくと屋外排気になるようにしました。ホースがプラプ
ラしなくていいし。





テーブルソーと作業台の高さを合わせる下駄を取り付けました。固定はM8の鬼
目ナットで。



テーブルソーの下に落ちる大鋸屑を集塵する漏斗を作ります。設計のためのプログラムのテストに作った紙の四角錘。
実際にベニヤ板で作るとなると作業工程をどうするかで結構悩む。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double
radian_to_degree (double radian)
{

  return (radian * 180.) / 3.14159265;
}

double
dihedral_angle (double a, double b, double d)
{

  double a2 = a * a;
  double b2 = b * b;
  double a2b2 = a2 * b2;
  double d2 = d * d;
  double t = -a2b2 / (sqrt ((a2b2 + b2 * d2) * (a2b2 + a2 * d2)));

  return radian_to_degree (acos (t));
}

int
main (int argc, char *argv[])
{
  if (argc < 3)
    {
      fprintf (stderr, "x y h\n");
      return 0;
    }

  double a, b, d;
  a = (double)atoi (argv[1]);
  b = (double)atoi (argv[2]);
  d = (double)atoi (argv[3]);
  a /= 2;
  b /= 2;

  printf ("x:%f, y:%f, h:%f => dihedral-angle:%f x-angle:%f y-angle:%f\n"
	  "x-height:%f y-height:%f edge:%f\n",
	  a * 2, b * 2, d,
	  dihedral_angle (a, b, d),
	  radian_to_degree (atan (d / b)),
	  radian_to_degree (atan (d / a)),
	  sqrt (d * d + b * b), sqrt (d * d + a * a),
	  sqrt (a * a + b * b + d * d));

  return 0;
}




BS走行会でした。行きは熊野町Jctで事故直後にはまってしまいトンネル内で
30分寿司詰め。筑波に着くとザーザー振り。ホームストレッチの真中、鴨が散
歩してるし。一本目の走行はパス。



10時くらいから雨が止んできたのだけど、今ひとつ雲行きがつかめず、走行は 断念。結果的には湿った路面くらいで走れたのだけど...。こういう時、青空ピッ トだと辛い。

もつ定食べにいったということで。


FF14Oβ、ログの整形スクリプトを作ってみました。
#!/bin/sh
DATAFILE=all.dat
TXTFILE=all

rm -f $DATAFILE
for i in `ls -tr *log`
do
    dd if=$i bs=1 skip=248 >> $DATAFILE 2> /dev/null
done
tr -d '\0' < $DATAFILE | sed -e 's/\(00[0-9A-F][0-9A-F]\):*:/\
\1 /g' | nkf -W | grep -v -e ^0001 -e ^005B -e ^0055 -e ^0061 -e ^006D \
> $TXTFILE.txt

sort -k 1,1 < $TXTFILE.txt > $TXTFILE.1.txt
sort  < $TXTFILE.txt > $TXTFILE.2.txt
grep -e ^0050 -e ^0052  $TXTFILE.2.txt | \
sed -e 's/00.. \(.*\)は\(.*\)に.*「\(.*\)」.* \(.*\)ダメージを与えた。/ \1 \2 \4 \3 /g' \
| grep -v ^0 |sort > $TXTFILE.mob_damage.txt
grep -e ^0051 -e ^0053 $TXTFILE.2.txt | \
sed -e 's/00.. \(.*\)は\(.*\)に.*「\(.*\)」.* \(.*\)ダメージを与えた。/ \1 \2 \4 \3 /g' \
| grep -v ^0 |sort > $TXTFILE.party_damage.txt
grep -e ^005C -e ^005D -e ^005E -e ^005F $TXTFILE.2.txt | \
sed -e 's/00.. \(.*\)は\(.*\)に.*HPを\(.*\)回復した。/ \1 \2 \3 /g' | \
grep -v ^0 |sort > $TXTFILE.cure.txt
IDはこんな感じかな。ちょっと適当なとこあり。
0000 (Mob)モールは土中に潜った。
0001 会話 Say
0002 会話 Shout
0004 会話 Party
0005 会話 Linkshell
000D 会話 tell
001B エモート
0020 システムメッセージ
0021 マクロコマンド
0023 NPC
0026 NPC(ギルドリーブ)
0028 ギルドリーブ メッセージ(神符を捧げる)
0042 「幻術」が56上達した。
0043 経験値,修錬値,特技ランク,フィジカルレベルの更新(他人も含む)
0044 「行動不能」状態から復帰した。(自分)
0045 倒した,倒された(他人も含む)
0051 ダメージ (MOB->ME) (カウンター含む)
0052 ダメージ (PT->MOB)
0053 ダメージ (MOB->PT) (カウンター含む)
0054 MOB 特殊技開始 ドードーは「ランシッドベルチ」の構え。
0055 ダメージ (Other->MOB)
0056 失敗 (ME)
0057 失敗 (MOB->ME)
0058 失敗/中止 (PT->MOB)
0059 失敗 (MOB->PT)
005A 失敗(特殊技) (MOB->PT)
005B 失敗(Other->MOB)
005C 回復(パーティ)(ME->PT)
005D 回復(PT->ME)
005E 回復(PT->PT)
005F 回復(Other->PT)
0061 回復(Other->Other)
0062 Buff 効果開始(ME->PT) 衰弱終了
0063 Buff 自分に対する効果の変化(ME)
0064 Buff 自分以外の効果の変化
0065 効果終了(PT)
0066 MOBの効果の変化
0067 他人の効果の変化
0068 Debuffの終了(ME)) 衰弱のはじまり
0069 Debuffのはじまり(ME)
006A Debuffの終了(PT) Debuffのはじまり(MOB) 衰弱開始
006B Debuffのはじまり(PT)
006C Debuffの終了(MOB)
006D 効果(Other)

与ダメ 0050 0052
被ダメ 0051 0053
回復 005C 005D 005E 005F
ドライポーンでリーヴ★5でこんな感じ。
 PlayerA ドードー 145 スキュアー 
 PlayerA ドードー 31 スカージ 
 PlayerA ドードー 45 突槍 
 PlayerA ドードー 48 突槍 
 PlayerA ドードー 53 突槍 
 PlayerB ドードー 10 幻矢 
 PlayerB ドードー 11 幻矢 
 PlayerB ドードー 29 ファイア 
 PlayerB ドードー 30 ファイア 
 PlayerB ドードー 30 ファイア 
 PlayerB ドードー 31 サンダー 
 PlayerB ドードー 32 サンダー 
 PlayerB ドードー 32 ファイア 
 PlayerB ドードー 36 ファイア 
 PlayerB ドードー 36 ファイア 
 PlayerB ドードー 38 サンダー 
 PlayerB ドードー 38 ファイア 
 PlayerB ドードー 39 ファイア 
 PlayerB ドードー 40 ファイア 
 PlayerB ドードー 40 ファイア 
 PlayerB ドードー 40 ファイア 
 PlayerB ドードー 41 サンダー 
 PlayerB ドードー 42 サンダー 
 PlayerB ドードー 42 サンダー 
 PlayerB ドードー 43 サンダー 
 PlayerB ドードー 45 ファイア 
 PlayerB ドードー 46 ファイア 
 PlayerB ドードー 47 ファイア 
 PlayerB ドードー 48 サンダー 
 PlayerB マーモット 53 サンダー 
 PlayerB マーモット 54 サンダー 
 PlayerB マーモット 64 ファイア 
 PlayerB マーモット 69 ファイア 
 PlayerB マーモット 75 ファイア 
 PlayerB マーモット 85 ファイア 
 PlayerB モール 42 ファイア 
 PlayerB モール 43 ファイア 
 PlayerB モール 59 ファイア 
 PlayerB ラセットヤーゾン 13 幻矢 
 PlayerC コブラン 24 斬撃 
 PlayerC コブラン 25 斬撃 
 PlayerC コブラン 26 斬撃 
 PlayerC コブラン 27 斬撃 
 PlayerC ドードー 12 斬撃 
 PlayerC ドードー 12 斬撃 
 PlayerC ドードー 12 斬撃 
 PlayerC ドードー 12 斬撃 
 PlayerC ドードー 14 斬撃 
 PlayerC ドードー 14 斬撃 
 PlayerC ドードー 14 斬撃 
 PlayerC ドードー 14 斬撃 
 PlayerC ドードー 14 斬撃 
 PlayerC ドードー 15 斬撃 
 PlayerC ドードー 15 斬撃 
 PlayerC ドードー 15 斬撃 
 PlayerC ドードー 15 斬撃 
 PlayerC ドードー 16 斬撃 
 PlayerC ドードー 16 斬撃 
 PlayerC ドードー 16 斬撃 
 PlayerC ドードー 16 斬撃 
 PlayerC ドードー 16 斬撃 
 PlayerC ドードー 16 斬撃 
 PlayerC ドードー 47 サークルスラッシュ 
 PlayerC ドードー 49 サークルスラッシュ 
 PlayerC ドードー 51 斬撃 
 PlayerC ドードー 52 斬撃 
 PlayerC ドードー 55 スピンストローク 
 PlayerC ドードー 68 斬撃 
 PlayerC マーモット 35 斬撃 
 PlayerC モール 15 斬撃 
 PlayerC モール 16 斬撃 
 PlayerC モール 17 斬撃 
 PlayerC モール 18 斬撃 
 PlayerC モール 18 斬撃 
 PlayerC モール 19 斬撃 
 PlayerC モール 19 斬撃 
 PlayerC ラセットヤーゾン 13 斬撃 
 PlayerC ラセットヤーゾン 13 斬撃 
 PlayerC ラセットヤーゾン 13 斬撃 
 PlayerC ラセットヤーゾン 13 斬撃 
 PlayerC ラセットヤーゾン 13 斬撃 
 PlayerC ラセットヤーゾン 14 斬撃 
 PlayerC ラセットヤーゾン 15 斬撃 
 PlayerC ラセットヤーゾン 16 斬撃 
 PlayerC ラセットヤーゾン 19 斬撃 
 PlayerC ラセットヤーゾン 19 斬撃 
 PlayerC ラセットヤーゾン 36 サークルスラッシュ 
 PlayerD コブラン 8 正拳 
 PlayerD コブラン 8 正拳 
 PlayerD コブラン 8 正拳 
 PlayerD コブラン 8 正拳 
 PlayerD コブラン 8 正拳 
 PlayerD コブラン 8 正拳 
 PlayerD コブラン 9 正拳 
 PlayerD コブラン 9 正拳 
 PlayerD コブラン 9 正拳 
 PlayerD コブラン 9 正拳 
 PlayerD コブラン 9 正拳 
 PlayerD コブラン 9 正拳 
 PlayerD コブラン 9 正拳 
 PlayerD サーフィド・クラウド 5 正拳 
 PlayerD サーフィド・クラウド 6 正拳 
 PlayerD ドードー 32 地烈斬 
 PlayerD ドードー 5 正拳 
 PlayerD ドードー 5 正拳 
 PlayerD ドードー 5 正拳 
 PlayerD ドードー 5 正拳 
 PlayerD ドードー 6 正拳 
 PlayerD ドードー 6 正拳 
 PlayerD ドードー 6 正拳 
 PlayerD ドードー 6 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 7 正拳 
 PlayerD ドードー 8 正拳 
 PlayerD ドードー 8 正拳 
 PlayerD ドードー 8 正拳 
 PlayerD ドードー 9 正拳 
 PlayerD ドードー 9 正拳 
 PlayerD モール 5 正拳 
 PlayerD モール 6 正拳 
 PlayerD モール 6 正拳 
 PlayerD モール 7 正拳 
 PlayerD モール 7 正拳 
 PlayerD モール 7 正拳 
 PlayerD ラセットヤーゾン 6 正拳 
 PlayerE コブラン 11 射撃 
 PlayerE サーフィド・クラウド 6 斧撃 
 PlayerE サーフィド・クラウド 6 斧撃 
 PlayerE ドードー 10 射撃 
 PlayerE ドードー 10 射撃 
 PlayerE ドードー 10 射撃 
 PlayerE ドードー 10 射撃 
 PlayerE ドードー 10 射撃 
 PlayerE ドードー 10 射撃 
 PlayerE ドードー 11 射撃 
 PlayerE ドードー 11 射撃 
 PlayerE ドードー 11 射撃 
 PlayerE ドードー 117 丸太割り 
 PlayerE ドードー 12 射撃 
 PlayerE ドードー 40 斧撃 
 PlayerE ドードー 40 斧撃 
 PlayerE ドードー 41 斧撃 
 PlayerE ドードー 7 射撃 
 PlayerE ドードー 8 射撃 
 PlayerE ドードー 8 射撃 
 PlayerE ドードー 8 射撃 
 PlayerE ドードー 8 射撃 
 PlayerE ドードー 8 射撃 
 PlayerE ドードー 9 射撃 
 PlayerE ドードー 9 射撃 
 PlayerE ドードー 9 射撃 
 PlayerE ドードー 9 射撃 
 PlayerE ドードー 9 射撃 
 PlayerE ドードー 9 射撃 
 PlayerE マーモット 1 飛礫 
 PlayerE マーモット 15 射撃 
 PlayerE マーモット 16 射撃 
 PlayerE マーモット 18 射撃 
 PlayerE マーモット 19 射撃 
 PlayerE マーモット 19 射撃 
 PlayerE マーモット 20 射撃 
 PlayerE マーモット 34 パンクチャー 
 PlayerE モール 1 飛礫 
 PlayerE モール 1 飛礫 
 PlayerE モール 1 飛礫 
 PlayerE モール 1 飛礫 
 PlayerE ラセットヤーゾン 11 斧撃 
 PlayerE ラセットヤーゾン 11 腰斬 
 PlayerE ラセットヤーゾン 12 斧撃 
 PlayerE ラセットヤーゾン 12 腰斬 
 PlayerF サーフィド・クラウド 6 正拳 
 PlayerF サーフィド・クラウド 6 正拳 
 PlayerF サーフィド・クラウド 6 正拳 
 PlayerF サーフィド・クラウド 7 拳撃 
 PlayerF サーフィド・クラウド 7 拳撃 
 PlayerF サーフィド・クラウド 7 正拳 
 PlayerF サーフィド・クラウド 7 正拳 
 PlayerF サーフィド・クラウド 7 正拳 
 PlayerF サーフィド・クラウド 8 正拳 
 PlayerF ドードー 10 正拳 
 PlayerF ドードー 10 正拳 
 PlayerF ドードー 10 正拳 
 PlayerF ドードー 10 正拳 
 PlayerF ドードー 12 正拳 
 PlayerF ドードー 16 拳撃 
 PlayerF ドードー 23 正拳 
 PlayerF ドードー 24 正拳 
 PlayerF ドードー 24 正拳 
 PlayerF ドードー 28 正拳 
 PlayerF ドードー 46 コンカシブブロー 
 PlayerF ドードー 7 拳撃 
 PlayerF ドードー 7 拳撃 
 PlayerF ドードー 7 拳撃 
 PlayerF ドードー 7 正拳 
 PlayerF ドードー 7 正拳 
 PlayerF ドードー 7 正拳 
 PlayerF ドードー 7 正拳 
 PlayerF ドードー 8 拳撃 
 PlayerF ドードー 8 拳撃 
 PlayerF ドードー 8 拳撃 
 PlayerF ドードー 8 正拳 
 PlayerF ドードー 8 正拳 
 PlayerF ドードー 8 正拳 
 PlayerF ドードー 8 正拳 
 PlayerF ドードー 9 拳撃 
 PlayerF ドードー 9 正拳 
 PlayerF ドードー 9 正拳 
 PlayerF ドードー 9 正拳 
 PlayerF ドードー 9 正拳 
 PlayerF ドードー 9 正拳 
 PlayerF ドードー 9 正拳 
 PlayerF ドードー 9 正拳 
 PlayerF ドードー 9 正拳 
 PlayerF ドードー 9 正拳 
 PlayerF マーモット 13 拳撃 
 PlayerF マーモット 14 拳撃 
 PlayerF マーモット 15 拳撃 
 PlayerF マーモット 16 拳撃 
 PlayerF マーモット 17 拳撃 
 PlayerF マーモット 17 拳撃 
 PlayerF マーモット 17 正拳 
 PlayerF マーモット 18 拳撃 
 PlayerF マーモット 18 拳撃 
 PlayerF マーモット 18 正拳 
 PlayerF マーモット 19 正拳 
 PlayerF マーモット 19 正拳 
 PlayerF マーモット 19 正拳 
 PlayerF マーモット 20 拳撃 
 PlayerF マーモット 20 正拳 
 PlayerF マーモット 20 正拳 
 PlayerF マーモット 21 拳撃 
 PlayerF マーモット 22 正拳 
 PlayerF マーモット 22 正拳 
 PlayerF マーモット 22 正拳 
 PlayerF マーモット 22 正拳 
 PlayerF マーモット 23 正拳 
 PlayerF マーモット 23 正拳 
 PlayerF マーモット 23 正拳 
 PlayerF マーモット 23 正拳 
 PlayerF マーモット 23 正拳 
 PlayerF マーモット 24 正拳 
 PlayerF マーモット 24 正拳 
 PlayerF マーモット 25 正拳 
 PlayerF マーモット 25 正拳 
 PlayerF マーモット 25 正拳 
 PlayerF マーモット 29 正拳 
 PlayerF モール 11 正拳 
 PlayerF モール 9 正拳 
 PlayerF モール 9 正拳 
 PlayerF ラセットヤーゾン 10 正拳 
 PlayerF ラセットヤーゾン 10 正拳 
 PlayerF ラセットヤーゾン 10 正拳 
 PlayerF ラセットヤーゾン 10 正拳 
 PlayerF ラセットヤーゾン 10 正拳 
 PlayerF ラセットヤーゾン 10 正拳 
 PlayerF ラセットヤーゾン 10 正拳 
 PlayerF ラセットヤーゾン 11 拳撃 
 PlayerF ラセットヤーゾン 11 拳撃 
 PlayerF ラセットヤーゾン 11 正拳 
 PlayerF ラセットヤーゾン 12 正拳 
 PlayerF ラセットヤーゾン 13 拳撃 
 PlayerF ラセットヤーゾン 14 正拳 
 PlayerF ラセットヤーゾン 15 正拳 
 PlayerF ラセットヤーゾン 9 拳撃 
 PlayerF ラセットヤーゾン 9 正拳 
 PlayerG ラセットヤーゾン 10 幻矢 
 PlayerG ラセットヤーゾン 6 幻矢 
 PlayerG ラセットヤーゾン 6 幻矢 
 PlayerG ラセットヤーゾン 6 幻矢 
 PlayerG ラセットヤーゾン 6 幻矢 
 PlayerG ラセットヤーゾン 6 幻矢 
 PlayerG ラセットヤーゾン 7 幻矢 
 PlayerG ラセットヤーゾン 7 幻矢 
 PlayerG ラセットヤーゾン 7 幻矢 
 PlayerG ラセットヤーゾン 7 幻矢 
 PlayerG ラセットヤーゾン 8 幻矢 
 PlayerG ラセットヤーゾン 8 幻矢 
 PlayerG ラセットヤーゾン 8 幻矢 
 PlayerG ラセットヤーゾン 8 幻矢 
 PlayerG ラセットヤーゾン 9 幻矢 
 PlayerH コブラン 19 突槍 
 PlayerH コブラン 21 突槍 
 PlayerH コブラン 22 突槍 
 PlayerH コブラン 35 トランメル 
 PlayerH サーフィド・クラウド 9 突槍 
 PlayerH ドードー 12 突槍 
 PlayerH ドードー 15 突槍 
 PlayerH ドードー 15 突槍 
 PlayerH ドードー 15 突槍 
 PlayerH ドードー 15 突槍 
 PlayerH ドードー 23 トランメル 
 PlayerH ドードー 26 トランメル 
 PlayerH ドードー 29 トランメル 
 PlayerH ドードー 65 トランメル 
 PlayerH マーモット 142 ムーンライズ 
 PlayerH マーモット 27 突槍 
 PlayerH マーモット 28 突槍 
 PlayerH マーモット 29 突槍 
 PlayerH マーモット 29 突槍 
 PlayerH マーモット 30 突槍 
 PlayerH マーモット 31 突槍 
 PlayerH マーモット 32 突槍 
 PlayerH マーモット 33 突槍 
 PlayerH マーモット 33 突槍 
 PlayerH マーモット 34 突槍 
 PlayerH マーモット 48 トランメル 
 PlayerH マーモット 62 トランメル 
 PlayerH モール 13 突槍 
 PlayerH モール 13 突槍 
 PlayerH モール 14 突槍 
 PlayerH モール 17 突槍 
 PlayerH ラセットヤーゾン 103 ドゥームスパイク 
 PlayerH ラセットヤーゾン 13 突槍 
 PlayerH ラセットヤーゾン 13 突槍 
 PlayerH ラセットヤーゾン 13 突槍 
 PlayerH ラセットヤーゾン 15 突槍 
 PlayerI ドードー 33 ファイア 
 PlayerI ドードー 40 ファイア 
 PlayerI ドードー 40 ファイア 
 PlayerI ドードー 41 ファイア 
 PlayerI ドードー 53 ファイア 
 PlayerI ドードー 54 ファイア 
 PlayerI ドードー 56 ファイア 
 PlayerI マーモット 85 ファイア 


BS走行会に向けてCR85の整備。ピストンは綺麗。これは去年交換したピストン
で一番ダメージのなかったやつ。





今回から使った新ヘッドが右、左が水漏れで壊してしまった旧ヘッド。#320の 金剛砂で定盤の上でかなり擦ってみても歪みをとりきれなかった。
旧: 組込み8.0cc,単体9.5cc スキッシュ0.85mm 高さ26.4mm
新: 組込み8.0cc,単体9.5cc スキッシュ0.80mm 高さ24.7mm




自動カンナの集塵ポート、外形整えて50x40の継ぎ手をつけました。



これはうまくいかなかった。大鋸屑が詰まってちょっと吹き出してしまう。と いっても全部開放で吹き出すのに較べれば格段に掃除の手間は減るので、まぁ なんとか使えなくもないレベル。ここはチャンバー室を設けた方がいいのかも。

テーブルソー上面を作業台上面と面一にするための下駄を作りました。角は #20のビスケットジョイント(x1)。



手押しカンナ用の集塵ポートできあがり。実際の集塵も問題なし。



自動カンナ用の集塵ポートも作り中。



CR85の補修パーツを調達。クランクとシリンダその周辺で7万。CR85なので他の
クラスに較べたら格段に安いとはいえ、トホホ...。そういえばホースクランプを
頼むの忘れてた。この機会に全部新品に交換しておこう。



新しく自在錘を購入。カナザワのパワービットNo.2。やじろべい型のに較べて 振り廻しがない分使いやすいし、開け終わりが穏やかでいい。穴あけ範囲は 22mm〜76mm。

手押しカンナ用の集塵ポートを作っています。40の継ぎ手をセメダインスーパー Xで固定。外形切ってから接着したかったのだけど、機械を使えない時間になっ てしまったので先にくっつけてから。



菜園状況。せっかく気温が下がって太陽が出てないので菜園作業。トマトは結
局一個も収穫できず終了。耕し直しました。



ナスはまだ元気だけれど、実を結ぶまでには...

ちょっと気温が下がってほっとしたところで体調を崩してしまった。


FF14Oβ参戦してきました。94.6%祭にもどうにか間に合って、プログレスバー
を眈めながらネ実を眺めるネトゲ祭。

正直、飛び降りもジャンプもないFF11そのままのフィールドにがっかりした。 たぶん泳げないし潜水もできないだろう。そしてシステムレベルで薄い世界設 定。EQ2の方がずっとわくわくした。
とはいえ、バトルレジメンを試したくPT募集すると即集まって、あれやこれや 試しているととても楽しい。攻略が確立される前にじたばたするのがいい。


MCFAJ3戦富士、予選2位、決勝2位でした。今回は前日車検を済ませてあるので、
5時起きで7時前に富士に到着。ちょっとでも上の伸びが欲しいということでプ
ラグをR7376-10からB10EGVの新品に。予選で試してみると今迄13500rpmだった
のが13800rpmまでいける。ただEGVは抵抗なしなのでノイズがひどく、ロガーは
ハング。P-LAPでもノイズ対策品じゃないとまともに動かないので、これは仕方
ない。


珍しく決勝に向けてMJを162から160に絞った。絞ってパリッとするキャブじゃ ない(PWK33)のだけど、藁をも感で。
決勝。スタートはまずまず。1コーナーのブレーキングを日和り過ぎて藤巻選手 にかなり先行されてしまう。結局インフィールドで追いつけずストレートにき てしまい、スリップにあずかろう作戦はここで終了。後からは小寺選手が。気 持ち毎周近付いてきているような...と思っていたらダンロップで差される。そ の後3,4周バトル、ラストラップ、バックマーカーの処理に手間どった隙をつい て先行。ストレートは思いっきり振ってなんとか押さえ切れた。
今回のレースもバトルで楽しかった。この4日間かなりしんどかったけれど、い い結果でよかった。

出走前に斜め前にRS125RFが。ほぉと見ているとスイングアームとブレーキロー ターの形から89以前の車体。聞いてみたらなんと87!(E/Gも)いい状態で保存さ れた車体があったものだ...。







予選 D.alt. 1269m 29.8℃ 64.4% 951.2hPa
2.5l 残0.5l (5周)
0.5枚57℃
MJ162
17:35
Max13800rpm 6速12000rpm

決勝 D.alt. 1338m 31.0℃ 62.2% 949.5hPa
4l 残 1.5l (8周)
0.25枚60℃
MJ160
17:35
Max13800rpm 6速12200rpm

最終とネッツが2速だとショート過ぎ。3速で大廻りでスピード乗せるのもちょっ
と難しい。





富士行ってきました。走行が13:00からと遅いので8時過ぎに家を出発したとこ
ろ、事故渋滞で横浜青葉から海老名SAまでみっちり。御殿場IC降りたら246まで
138が渋滞。わかってはいたのだけど、朝6時に起きてみたところちょっと辛かっ
た。2時間半かかった。ちょっと無理にでも朝に出て、木陰で仮眠した方が楽だっ
たかも?


とにかく暖機してみると、問題なさげ。一安心。
12:45 D.alt. 1427m 33.4℃ 51.5% 948.3hPa 0.5枚65℃
タイムは2'13.3まで。E/Gのフィールは全然変わらない。クランクケースの盛り削りがかなり違うんだけど、変わらないね。

今日のロガーデータ。トップスピードはおとといとまったく同じ。E/Gに遜色は なしと。

走行時間が遅い関係で珍しくサーキットでメンテを終わらせて帰宅。富士を 15:30に出発。厚木-横浜町田で事故渋滞3kmあっただけで2時間で帰宅できた。


腰下は予備E/Gに。シリンダは去年の。ちょっと今年仕様に削り直し。ヘッドは
予備に切削しておいた同一容量でちょっと形状の違うやつ。このヘッドは一度
も試してないのでちょっと不安。かなり切削し直したヘッドなので2mmほどワッ
シャを狭まないときちんとした位置にプラグがこない。



今迄よりシリンダ下面近くを大きく削りこんでみています。



昨日のロガーデータ。 フィイナル17:34

ファイナル17:35 二本目はなんかP-LAPのノイズがひどい。プラグかな。

やっぱり6速.96がないと辛い。今は.92。ストレートで6速で加速しないし。と いって5速でも13500rpmのままひっぱりになってしまう。
いや、今の状況だと完走できることが目標だ。ゆっくりゆっくり。


クランクと腰上全てお釈迦...ショック過ぎる。



原因は、ホースクランプが割れて、水漏れ。

久々の富士、楽しく走れてたのに、最後残り5分で...。