MANIMANIAのレトロエロゲーカウントダウン

人生の残り時間が半分を切ったというのに若き日に目にしたエロゲーに魂を引かれ続けるイタいおっさんがこなしたゲームを紹介。

晴れのちおおさわぎ!(PC-98,カクテル・ソフト)ADVSHELL.COM解析(その1)

2012-06-27 19:09:14 | レトロパソコンのお作法
もう2年になりますでしょうか,「晴れのちおおさわぎ!」(PC-98,カクテル・ソフト)のIPLからの立ち上げ後,起動するADVSHELL.COMの解析を試みておりましたが,ようやく自分としてはこれ以上時間をかけても新たな発見が見込まれないであろうというところまでの作業をすませましたので,とりあえず発表してしまいます。

SYMDEB.EXEでADVSHELL.COMのトレース実行を試みましたが,NP21では,-Tのトレースモードに入ったところで作動停止。T98-Nextでは,トレース実行ができないようで,いきなりプログラムの実行を完了してプログラムに基づくエラー表示。。無償使用できるようになった最新版Anex86では,実機より少し先でやはり作動停止。
そんなわけで,プログラムの流れは完全には検証できていません。

解析結果のフローチャートは以下のとおり。





コメント付きソースは6万字を超えたので,4回くらいに分けないとアップできません・・・。たった2,048バイトのプログラムなのに。私のコメントが過剰なのか?
次の行から,下はコメント付きソースの第1弾。先は長いよ。
なお,SOUCERによる逆アセンブルリストをベースにしています。

seg_a segment byte public
assume cs:seg_a, ds:seg_a


org 100h

ADVSHELL proc far

3B66:0100 start:
3B66:0100 E9 00FD jmp real_start ; (0200)
3B66:0103 00FD[00] db 253 dup (0)

;##########################################################################
;
; External Entry Point
;
;##########################################################################

;レジスタ群初期化
3B66:0200 real_start: ; xref 3B66:0100
3B66:0200 FA cli ; Disable interrupts 外部割込禁止
3B66:0201 8C C8 mov ax,cs ; AX=CS
3B66:0203 8E D8 mov ds,ax ; DS=AX
3B66:0205 8E D0 mov ss,ax ; SS=AX CS=DS=SS
3B66:0207 BC 0200 mov sp,200h ; SP=0200H
3B66:020A FB sti ; Enable interrupts 割込フラグをセット
; 次の命令の最後で、外部割込を可能に。
3B66:020B E8 055C call sub_14 ; (076A)

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:020B
;##########################################################################

3B66:076A sub_14 proc near
3B66:076A E8 FEB1 call sub_7 ; (061E)

;##########################################################################
; SUBROUTINE
;
; 割込禁止等処理ルーチン~065CH,COPYキー,STOPキー,Ctrl-Cキーの無効化
; 致命的ディスクエラーに対する独自処理?,0514H:0512Hにファンクションコールにシステムコールアドレス確保?
; (MS-DOSシステムコールハンドブック,河西朝雄著,ナツメ社発行,'91/11/11,P.~)
; (MS-DOS エンサイクロペディア Volume2 リファレンス編,マイクロソフトプレス編,株式会社アスキー発行P.~)
; Called from: 3B66:076A
;##########################################################################

3B66:061E sub_7 proc near
3B66:061E FA cli ; Disable interrupts 外部割込禁止
3B66:061F ,BA 031D mov dx,offset int_06h_entry ; DX=031DH
3B66:0622 52 push dx ; DX退避
3B66:0623 B8 2505 mov ax,2505h ; 割込ベクタの設定,割込タイプ番号 05H COPYキー
3B66:0626 CD 21 int 21h ; DOS Services ah=function 25h
; set intrpt vector al to ds:dx
; DS:DX(031DH)=割り込み処理ルーチンのアドレス
; DS:031DH IRET 割込からのリターン命令
; COPYキー割込に何もせずリターン。以下,同様。

3B66:0628 5A pop dx ; DX復帰。DX=031DH
3B66:0629 52 push dx ; DX退避

3B66:062A B8 2506 mov ax,2506h ; 割込ベクタの設定,割込タイプ番号 06H STOPキー
3B66:062D CD 21 int 21h ; DOS Services ah=function 25h
; set intrpt vector al to ds:dx
; DS:DX(031DH)=割り込み処理ルーチンのアドレス
; DS:031DH IRET 割込からのリターン命令
; STOPキー割込に何もせずリターン。
3B66:062F 5A pop dx ; DX復帰。DX=031DH

3B66:0630 B8 2523 mov ax,2523h ; 割込ベクタの設定,割込タイプ番号 23H Ctrl-Cキー
3B66:0633 CD 21 int 21h ; DOS Services ah=function 25h
; set intrpt vector al to ds:dx
; DS:DX(031DH)=割り込み処理ルーチンのアドレス
; DS:031DH IRET 割込からのリターン命令
; Ctrl-Cキー割込に何もせずリターン。

3B66:0635 ,BA 02B6 mov dx,offset int_24h_entry ; DX=02B6H
3B66:0638 B8 2524 mov ax,2524h ; 割込ベクタの設定,割込タイプ番号 24H 致命的ディスクエラー発生
3B66:063B CD 21 int 21h ; DOS Services ah=function 25h
; set intrpt vector al to ds:dx
; DS:DX(02B6H)=割り込み処理ルーチンのアドレス

3B66:063D B8 3521 mov ax,3521h ; 割込ベクタの取得 割込番号 21H システムコール
3B66:0640 CD 21 int 21h ; DOS Services ah=function 35h
; get intrpt vector al in es:bx
; ES:BX=割込ルーチンのアドレス

3B66:0642 89 1E 0512 mov word ptr data_81,bx ; DS:0512Hのアドレスのメモリに割込ハンドルのオフセットアドレスを代入,DS:0512H=BX
3B66:0646 8C 06 0514 mov word ptr data_81+2,es ; DS:0514Hのアドレスのメモリに割込ハンドルのセグメントアドレスを代入,DS:0514H=ES
; 割込ハンドルES:BX=[0514H]:[0512H]

3B66:064A BA 032E mov dx,32Eh ; DX=032EH
3B66:064D ,BB 0084 mov bx,data_2e ; BX=0084H
BB data16 MOV BX,data16 word move data to BX
3B66:0650 2B C0 sub ax,ax ; AX=0000H
3B66:0652 8E C0 mov es,ax ; ES=0000H
3B66:0654 26: 89 17 mov es:[bx],dx ; ES:[0084H]=032EH, 0086:0084は本来のシステムコールアドレス,システムコールの無効化?
3B66:0657 26: 8C 5F 02 mov es:[bx+2],ds ; ES:[0086H]=DS, [0086H]:[0084H]=DS:032EH, 032EHは,PUSHF
3B66:065B FB sti ; Enable interrupts 割込フラグセット,次の命令の最後で割込を可能に
3B66:065C C3 retn
sub_7 endp

;キーバッファ設定
3B66:076D 2B C0 sub ax,ax ; AX=0000H
3B66:076F 8E C0 mov es,ax ; ES=0000H
3B66:0771 26: 80 0E 0500 20 or byte ptr es:[0500H],20h ; 98のワークエリアのセグメント0000H,オフセット0500Hの第5ビットを1にする
; キーバッファオーバーフロー時にビープを鳴らさない設定
; http://www.webtech.co.jp/company/doc/undocumented_mem/memsys.txt
;画面クリア
3B66:0777 ,BA 07A4 mov dx,offset data_96 ; (3B66:07A4='ESC[2J') 画面をクリアし,カーソルをホームに移動
3B66:077A B4 09 mov ah,9 ; 文字列の表示,DS:DX=07A4Hで始まる$までの文字列を画面に表示する
3B66:077C CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx 1Bはエスケープキーの文字コード

3B66:077E E8 FEDD call sub_8 ; (065E)

;##########################################################################
; SUBROUTINE
; ストリング2000H本ノックルーチン
; Called from: 3B66:077E
;##########################################################################

3B66:065E sub_8 proc near
3B66:065E FC cld ; Clear direction 割込フラグをクリア,外部割込禁止
3B66:065F B8 A000 mov ax,0A000h ; AX=0A000H テキストVRAMセグメント
3B66:0662 8E C0 mov es,ax ; ES=0A000H
3B66:0664 2B FF sub di,di ; DI=0000H
3B66:0666 B8 0020 mov ax,20h ; AX=0020H
3B66:0669 B9 1000 mov cx,1000h ; CX=1000H
3B66:066C F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di] ES:[DI]から始まるメモリにAXレジスタの内容0020Hをストア
; CXレジスタの回数分1000H回繰り返して終了。0A000:0000HからAXレジスタの内容を1000H回分ストア
; TVRAMに1000H回0020H(2バイト)をストア,終了時DI=2000H
3B66:066E B8 00E1 mov ax,0E1h ; AX=00E1H
3B66:0671 B9 1000 mov cx,1000h ; CX=1000H,終了時DI=4000H
3B66:0674 F3/ AB rep stosw ; Rep when cx >0 Store ax to es:[di] 同上。ただし,ストアされる内容は00E1H
3B66:0676 C3 retn
sub_8 endp

;メーカー名,タイトル表示,プログラム読み込み中表示
3B66:0781 ,BA 07A9 mov dx,07A9H ; (3B66:07A9=' [mAdvShell for ')
3B66:0784 B4 09 mov ah,9 ; 文字列の表示,DS:DXで始まる$までの文字列を画面に表示する
3B66:0786 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx

3B66:0788 B4 12 mov ah,12h ; カーソルの表示停止(UNDOCUMENTED 9801/9821,P.65)
3B66:078A CD 18 int 18h ; ROM basic

3B66:078C B0 0F mov al,0Fh ;DISP ENABLE テキストとグラフィック両方の画面表示のON。
; http://www.webtech.co.jp/company/doc/undocumented_mem/io_disp.txt
3B66:078E E6 68 out 68h,al ; port 68h I/O Non-standard

3B66:0790 E8 FF8B call sub_12 ; (071E)

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:0790
;##########################################################################
;カレントドライブ確認ルーチン
3B66:071E sub_12 proc near
3B66:071E B4 19 mov ah,19h ;Current Disk カレントドライブ番号の取得
3B66:0720 CD 21 int 21h ; DOS Services ah=function 19h
; get default drive al (00H=A:,01H=B:)
3B66:0722 84 C0 test al,al ; ドライブ番号のANDを取る。
3B66:0724 74 1F jz loc_26 ; Jump if zero ドライブAならZF=1になり,0745Hへ

;***********************************************************************************************
;ここからエラー表示
;起動ドライブエラー
3B66:0726 BA 086A mov dx,86Ah ; ドライブAでない場合,DX=086AH
3B66:0729 E8 FAEC call sub_1 ; (0218)

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:0729 ;異常時文字列表示ルーチン
;##########################################################################

3B66:0218 sub_1 proc near
3B66:0218 loc_1: ; xref 3B66:0254
3B66:0218 E8 0069 call sub_3 ; (0284) エラー文字列表示ルーチンへ

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:0218 ;起動ドライブ違いエラールーチン
;##########################################################################

3B66:0284 sub_3 proc near
3B66:0284 B4 09 mov ah,9 ; DX=086AHで飛んできた。文字列 'ドライブA:から起動しなおしてください。'
3B66:0286 CD 21 int 21h ; DOS Services ah=function 09h 文字列の表示,DS:DXから$までの文字列を画面に表示
; display char string at ds:dx
3B66:0288 loc_10: ; xref 3B66:028A
3B66:0288 ,FA cli ; Disable interrupts 外部割込禁止
3B66:0289 F4 hlt ; Halt processor 割込がかかるまでCPUを停止させる
3B66:028A EB FC jmp short loc_10 ; (0288)
sub_3 endp

3B66:021B 90 nop
3B66:021C loc_2: ; xref 3B66:021C
3B66:021C EB FE jmp short loc_2 ; (021C) 無限ループ
sub_1 endp

;以上,エラー表示終了
;**********************************************************************************************
;カレントドライブAのときここへ
3B66:0745 loc_26: ; xref 3B66:0724
3B66:0745 E8 FF30 call sub_9 ; (0678) ドライブAからの起動確認後ここに来た。AL=00H確認ずみ。

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:0745
;##########################################################################

3B66:0678 sub_9 proc near
3B66:0678 E8 00D5 call sub_13 ; (0750)

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:0678, 074C ;ディスクリザルト,ディスクリセット+ディスク確認呼出ルーチン
;##########################################################################

3B66:0750 sub_13 proc near
3B66:0750 2B C0 sub ax,ax ; AX=0000H
3B66:0752 8E C0 mov es,ax ; ES=0000H
3B66:0754 BB 0564 mov bx,0564 ; BX=0564H
3B66:0757 B0 C0 mov al,0C0h ; AX=00C0H
3B66:0759 B9 0004 mov cx,4 ; CX=0004H カウンタを4回にセット

3B66:075C locloop_27: ; xref 3B66:0762
3B66:075C 26: 08 07 or es:[bx],al ; DISK RESULT
; 98のワークエリア0000H:0564Hの第6,7ビットを1にする。
; 第1FDDのInterrupt Codeの0と1をセット。
; http://www.webtech.co.jp/company/doc/undocumented_mem/memsys.txt
3B66:075F 83 C3 08 add bx,8 ; BX=056CH
3B66:0762 E2 F8 loop locloop_27 ; Loop if cx > 0
;(ループ内容)
;残り3回
3B66:075C 260807 OR ES:[BX],AL ; 98のワークエリア0000H:056CHの第6,7ビットを1にする。
; 第2FDDのInterrupt Codeの0と1をセット。
3B66:075F 83C308 ADD BX,0008H ; BX=0574H
3B66:0762 E2F8 LOOP 075CH ; CXの値を1減じて0でなければ065CHへ。CX=0002H。
;残り2回
3B66:075C 260807 OR ES:[BX],AL ; 98のワークエリア0000H:0574Hの第6,7ビットを1にする。
; 第3FDDのInterrupt Codeの0と1をセット。
3B66:075F 83C308 ADD BX,0008H ; BX=057CH
3B66:0762 E2F8 LOOP 075CH ; CXの値を1減じて0でなければ065CHへ。CX=0001H。
;残り1回
3B66:075C 260807 OR ES:[057C],AL ; 98のワークエリア0000H:057CHの第6,7ビットを1にする。
; 第4FDDのInterrupt Codeの0と1をセット。
3B66:075F 83C308 ADD BX,0008H ; BX=0584H
3B66:0762 E2F8 LOOP 075CH ; CXの値を1減じて0なので無視。CX=0000H。

3B66:0764 B4 0D mov ah,0Dh ; Disk Reset ディスクのリセット
3B66:0766 CD 21 int 21h ; DOS Services ah=function 0Dh 全ファイルバッファの内容をディスクに書き出し,
; flush disk buffers to disk ファイルバッファを空にする。(DOS6.2PRM P.61)
3B66:0768 C3 retn ; AX=0D0CH
sub_13 endp


3B66:067B 2A C0 sub al,al ;AX=0D00H
3B66:067D E8 006A call sub_11 ; (06EA)

;##########################################################################
; SUBROUTINE(ソーサーが作ってくれなかったサブルーチン)
;
; Called from: 3B66:067D ; ディスク確認ルーチン
;##########################################################################

;ドライブAディスク確認ルーチン~057D,AX=0D00H
3B66:06EA 1E PUSH DS
3B66:06EB 07 POP ES ; DS=ES
3B66:06EC 50 PUSH AX ; AX退避,AX=0D00H。
3B66:06ED 8AE0 MOV AH,AL ; AX=0000H。
3B66:06EF 054160 ADD AX,6041H ; AX=6041H。
3B66:06F2 88269F08 MOV [089FH],AH ; DS:[089FH]=60H 'A' ; [089FH]のメモリに全角Aの文字コードを入力した
3B66:06F6 A2FA08 MOV [08FAH],AL ; DS:[08FAH]=41H 'A' ; [08FAH]のメモリに半角Aの文字コードを入力した
3B66:06F9 58 POP AX ; AX=0D00H ; AX復帰。AX=0D00H
3B66:06FA BB0009 MOV BX,0900H ; BX=0900H
3B66:06FD 8BFB MOV DI,BX ; DI=0900H
3B66:06FF B90100 MOV CX,0001H ; CX=0001H
3B66:0702 BA0300 MOV DX,0003H : DX=0003H
3B66:0705 57 PUSH DI ; DI退避
3B66:0706 CD25 INT 25H ; Absolute disk read, drive al
; if disk under 32MB, dx=start
; cx=#sectors, ds:bx=buffer
; else cx=-1, ds:dx=parm block
; (MS-DOS エンサイクロペディア Volume2 リファレンス編,マイクロソフトプレス編,株式会社アスキー発行P.813~)
; (応用MS-DOS改訂新版,村瀬康治著,株式会社アスキー発行,'89/12/31,P189~)
; (MS-DOSシステムコールハンドブック,河西朝雄著,ナツメ社発行,'91/11/11,P.60~)
; ftp://ftp.abk.nu/pub/text/dos/msdos.txt
; 物理セクタ番号によるディスク読み出し
; AL=ドライブ番号(A:=00H,B:=01H,,,),AL=00HなのでA:
; BX=ディスク転送アドレスのオフセット,読み出すデータの先頭アドレス DS:BX=DS:0900H
; 読み出すセクタ数 CX=0001H 1セクタ
; 読み出しを開始する相対的(論理)セクタ番号 DX=003H 3セクタ
; ディレクトリ領域を正常に読めればCF=0
; セグメントレジスタ(CS,SS,DS,ES)以外の全てのレジスタ破壊。
; フラグはスタックに積まれる(PUSHF)ので,終了後はPOPFまたはADD SP,2。
; ディスク操作が正しく行われるとCF=0
; DS:0900Hに論理セクタ番号3(ディレクトリエントリ)のデータ'ハレノチオオサワギA)',00H*4以下がロードされた。

3B66:0708 58 POP AX ; フラグレジスタをAXに載せる
3B66:0709 5F POP DI ; DI=0900H
3B66:070A BAFFFF MOV DX,0FFFFH ; DX=0FFFFH
3B66:070D 720C JC 071BH ; Jump if carry Set,CF=1(正常に読めない)なら071BHへ。
3B66:070F BEF008 MOV SI,08F0H ; ADVSHELL.COMの[08F0H]には,
; 'ハレノチオオサワギA)',00H*4が書かれている。
;[SI]=CA DA C9 C1 B5 B5 BB DC B7 DE 41 29 00 00 00 00
3B66:0712 B90800 MOV CX,0008H ;
3B66:0715 FC CLD ;ディレクションフラグを0(増加)にリセット
3B66:0716 F3/ A7 repe cmpsw ; Rep zf=1+cx >0 Cmp [si] to es:[di] ; ZF=1で,かつCXが0でない間CXを1減じつつCMPSWを繰り返す。
; ES=DS:[DI]とDS:[SI] にある一致していないワードを探す。
; データブロックの比較
; DS:[SI]とES:[DI]で示されるメモリをワード値で比較し,
; SIとDIの値を2増加させる。8ワード分比較する。
; ES:[DI]には論理セクタ番号3(ディレクトリエントリ)
; 先頭データ'ハレノチオオサワギA)',00H*4が格納されているので一致する
3B66:0718 7501 JNE 071BH ; Jump if not zero, ZF=0(不一致)なら071BHへ
;**********************************************************************************************
;正常時処理
3B66:071A 42 INC DX ; DX=0000H,ZF=1
;エラー時は1行飛ばし 3B66:071B 8BC2 MOV AX,DX ; 正常時AX=0000H,ZF=1,エラー時AX=0FFFFH,ZF=0
3B66:071D C3 RET ;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3B66:0680 85 C0 test ax,ax ; AX=0000HならZF=1,エラー時AX=0FFFFHなのでZF=0
3B66:0682 75 05 jnz 0689H ; Jump if not zero ZF=0ならRET直行
3B66:0684 B0 01 mov al,1 ; ZF=1(一致)なら,AL=01H。AX=0001H。
3B66:0686 E8 0061 call sub_11 ; (06EA) Bディスク確認ルーチンへ。

;ドライブBディスク確認ルーチン
以下,第2弾へ。
3B66:06EA 1E PUSH DS ;
3B66:06EB 07 POP ES ; DS=ES
3B66:06EC 50 PUSH AX ; AX退避,AX=0001H。
3B66:06ED 8AE0 MOV AH,AL ; AX=0101H
3B66:06EF 054160 ADD AX,6041H ; AX=6142H
3B66:06F2 88269F08 MOV [089FH],AH ; DS:[089FH]=61H 'B'
3B66:06F6 A2FA08 MOV [08FAH],AL ; DS:[08FAH]=42H 'B'
3B66:06F9 58 POP AX ; AX=0001H
3B66:06FA BB0009 MOV BX,0900H ; BX=0900H
3B66:06FD 8BFB MOV DI,BX ; DI=0900H, 読み出したデータの先頭アドレス
3B66:06FF B90100 MOV CX,0001H ; CX=0001H, 1セクタ読み出し
3B66:0702 BA0300 MOV DX,0003H : DX=0003H, 論理セクタ3(ディレクトリエントリ)のデータ
3B66:0705 57 PUSH DI ; DI退避
3B66:0706 CD25 INT 25H ; アブソリュートディスクリード
; AL=ドライブ番号(A:=00H,B:=01H,,,),AL=01HなのでB:
3B66:0708 58 POP AX ; フラグレジスタをAXに載せる
3B66:0709 5F POP DI ; DI=0900H
3B66:070A BAFFFF MOV DX,0FFFFH ; DX=0FFFFH
3B66:070D 720C JB 071BH ; CF=1(正常に読めない)なら071BHへ。
3B66:070F BEF008 MOV SI,08F0H ; DS:[08F0H]には,'ハレノチオオサワギB)',00H*4が書かれている。
; 06F6HでA→Bに書き換えずみ
; [SI]=CA DA C9 C1 B5 B5 BB DC B7 DE 42 29 00 00 00 00
3B66:0712 B90800 MOV CX,0008H ;
3B66:0715 FC CLD ; ディレクションフラグを0(増加)にリセットした。
3B66:0716 F3/ A7 repe cmpsw ; Rep zf=1+cx >0 Cmp [si] to es:[di]
; ZF=1で,かつCXが0でない間CXを1減じつつCMPSWを繰り返す。
; ES:[DI]とDS:[SI] にある一致していないワードを探す。
; データブロックの比較
; DS:[SI]とES:[DI]で示されるメモリをワード値で比較し,
; SIとDIの値を2増加させる。8ワード分比較する。
; ES:[DI]には論理セクタ番号3(ディレクトリエントリ)
; 先頭データ'ハレノチオオサワギB)',00H*4が格納されている。
3B66:0718 7501 JNE 071BH ; ZF=0(データ不一致)なら071BHへ。DX=0FFFFH
3B66:071A 42 INC DX ; DX=0000H
3B66:071B 8BC2 MOV AX,DX ; AX=0000H,ZF=1,0718Hから来たときは,AX=0FFFFH,ZF=0
3B66:071D C3 RET ; 0689Hへ復帰。

3B66:0689 loc_ret_22: ; xref 3B66:0682
3B66:0689 C3 retn
sub_9 endp

3B66:0748 85 C0 test ax,ax ; AX=0000Hなので,ZF=1
3B66:074A 75 E0 jnz 072CH ; Jump if not zero ,ZF=1なのでスルー
; エラー時は072CHへ
;**********************************************************************************************
エラー時表示ルーチン
3B66:072C loc_25: ; xref 3B66:074A
3B66:072C ,BA 0896 mov dx,0896h ;'ドライブA:のディスクを確認してください。$'
3B66:072F B4 09 mov ah,9 ; Bディスク確認エラーなら06F2Hで089FHをAからBに書き換えずみ
3B66:0731 CD 21 int 21h ; DOS Services ah=function 09h 文字列の表示
; display char string at ds:dx DXを先頭アドレスとする$までの文字列
3B66:0733 B4 11 mov ah,11h ; カーソルの表示開始(UND P.65)
3B66:0735 CD 18 int 18h ; ROM basic
3B66:0737 E8 FBE4 call sub_6 ; (031E)キー入力確認ルーチンへ

;キー入力確認ルーチン~0637H
3B66:031E B401 MOV AH,01H ;キーバッファ状態のセンス 出力 BH=00 キー入力データなし
3B66:0320 CD18 INT 18H ;(UNDOCUMENTED 9801/9821,P.41)  BH=01 キー入力データあり
;AH=キーコード,AL=キーデータ
;キーバッファにキー入力データがなければすぐに終了する。
3B66:0322 53 PUSH BX ;BX=BH00H
3B66:0323 B400 MOV AH,00H ;キーデータの読み出し(1文字の入力待ち)
3B66:0325 CD18 INT 18H ;(UNDOCUMENTED 9801/9821,P.40) AH=キーコード,AL=キーデータ
;入力を待つので進まない。
3B66:0327 5B POP BX ;BX=BH00H
3B66:0328 84FF TEST BH,BH ;キー入力なしならZF=1,キー入力ありZF=0
3B66:032A 75F2 JNE 021EH ;キー入力あり(ZF=0)なら,021EHへ。無限ループ?
3B66:032C C3 RET ;

3B66:073A B4 12 mov ah,12h ; カーソルの表示停止
3B66:073C CD 18 int 18h ; ROM basic,(UNDOCUMENTED 9801/9821 小高輝真・河野健著 株式会社インプレス発行 '94/03/21,P.65)
3B66:073E ,BA 08C2 mov dx,08C2h ; (3B66:08C2='全角スペース21個',0DH,'$')
3B66:0741 B4 09 mov ah,9 ; '$'検出までの文字列の表示
3B66:0743 CD 21 int 21h ; DOS Services ah=function 09h
; display char string at ds:dx
エラー時表示ルーチン終了
;**********************************************************************************************

3B66:074C E8 0001 call sub_13 ; (0750)

以下,晴れのちおおさわぎ!(PC-98,カクテル・ソフト)ADVSHELL.COM解析(その2)に続く。
晴れのちおおさわぎ!(PC-98,カクテル・ソフト)ADVSHELL.COM解析(その3)はこちら

<<著作権に関して>>
本記事に引用している全てのソフトの名称・画像の著作権・その他権利は、制作、販売されたソフトハウス、メーカー、または作者様に帰属します。本サイトでの上記著作物の取扱いは、著作権など各権利関係を侵害することが目的ではありません。問題などある場合は、メール(gekigangarあっとmail.goo.ne.jp)にてその旨お知らせください。

FD解析ソフトまたはFD解析ツールについて

2012-06-19 13:22:12 | レトロパソコンのお作法
以前,いや驚いたでご紹介した,国立国会図書館内の,電子情報の長期利用保証に関する 平成 18 年度調査報告書内の4. FDマイグレーションの調査の箇所を読んだときのことです。

DiskExplorerNeko Project IIなどのフリーソフトはもちろん,「システムポート社のファイルコンバートソフト『コンバートスター16』」とか,メーカー名並記で特定企業の商品を明記することを避けておらず,FDデータのマイグレーションに必要な情報を広く開示する姿勢に感動しました。

ところが,「FD解析ソフト」,「FD解析ツール」に関しては,「FD の詳細調査に当たっては、FDの記録情報をトラック単位、セクタ単位に読み書き、移動等が可能な環境(PC-98 とFD 解析ソフト)を用いて実施した。」などとマイグレーション作業において明らかに使用されており,「マイグレーション不可となった FD の詳細調査」の中では,「1DD」規格の FD のイメージ作成や,データ異常のために不可となったFDへの対処においても大活躍の超重要ツールであるにもかかわらず,メーカー名も名称もまったく明らかにされてませんでした。

「FDの記録情報をトラック単位、セクタ単位に読み書き、移動等が可能な環境(PC-98 とFD 解析ソフト)」という表現から,分かる人には分かるものの,多額の税金を投じた調査結果の報告において,重要な働きをしている「FD解析ソフト」,「FD解析ツール」が何であるかを明記しないのはあまりに不親切だ!と不満に思っておりました。

その後,国会図書館の報告書について,しばらく忘れていたのですが,ふと思い立って今日,その後の調査を見たところ,フロッピーディスクのマイグレーション作業についての追加報告を含む平成19年度電子情報の長期利用保証調査に関する調査報告書 第1.1版 平成20年3月31日内の(5)問題 FDの再調査詳細の項目に,ついに発見しました。報告書の18頁,データでは21頁部分です。



ジャジャーン!出た!
メーカー名も商品名も明らかにしてはもらえていないが,そこにはしっかりと,
「Disk Analyzer Wizard V3/98 Ver.1.0 Format Reproduce Editor&Intelligent Analyzer」の文字が。

それにしても,FDDがDrive7って,ちょっと増設し過ぎでしょ。
2013/06/14追記
ManualモードでFDDを640KBで指定するとDrive7って表示されました。
そういう仕様なんですねー。
2013/06/14追記



(注・画像はいずれも報告書から引用しました)

キター!当時は知らない者のない西側の魔術師!
もはやメーカーでもサポートしていないあのツールが,国会図書館で活用されてる!
しかも活躍してるし!

まあこれで,安心してうちのサイトでも,国立国会図書館公認ツールWizardの使い方解説とかも少しは書けそうってもんです。
そんなことしてると,またゲームレビューが遅延するわけですが。

2013/06/14追記
懸案のWIZARD記事,書きました。
WIZARD V5 ファイラーバックアップ編
2013/06/14追記終了

<<著作権に関して>>
本記事に引用している全てのソフトの名称・画像の著作権・その他権利は、制作、販売されたソフトハウス、メーカー、または作者様に帰属します。本サイトでの上記著作物の取扱いは、著作権など各権利関係を侵害することが目的ではありません。問題などある場合は、メール(gekigangarあっとmail.goo.ne.jp)にてその旨お知らせください。

GUNBLAZE ガンブレイズ('94/10/21・アクティブ)・追記あり

2012-06-14 00:00:00 | PC98ソフト RPG
PC98用ゲーム。FD4枚組。回想モードあり。

パッケージはこちら。


ちなみに,マニュアルにはキャラクターデザインの聖少女氏の寝顔写真などが載っていたりして。

7つの海の支配者,世界の工場,陽の落ちる事のない帝国イギリス,大英帝国。
18世紀から19世紀にかけて,大いなる発展を遂げたが,大気は汚染され,テムズ川からはひどい1年以上にわたって続き,強盗強奪,暴行が日常茶飯事と化していた。ロンドンのはるか上空1000メートルに浮かぶ飛行船レッド・ツエッペリン号では非常事態が発生していた。



主動力のエーテルリアクターから光子結晶が奪われ,エーテル科学者キーン博士の孫娘,ジュエル・フリントが船から脱出したのだ。

女の一人歩きのできなくなった夜のロンドンでは,高額賞金を約束する美少女の活版印刷による手配書を手にした年中開店休業の探偵マーク・フリントが,心荒んだ暴漢たちの慰み者になりかけた少女を救い出した。

 

その少女は奇しくも手配書の少女にして,名をジュエル・フリントといい,マークの従兄弟だった。
ジュエルは,秘密結社薔薇十字軍ローゼンクロイツが新たな指導者アイリーンの下で世界征服を目指して活動していることを告げる。
その戦力として,光を自由に増幅することのできる光子結晶エーテルを用いて世界を燃やし尽くす光の束を作り出そうとしているというのだ。
エーテルを精製して作り出された100%純粋なエーテル「シャイニング・スター」で生きながらえる病身の少女ジュエルは,自分とともに落ちてきたもう1つのエーテルである,エーテルを埋め込んだ飾りの付いた銃エーテルブラストの捜索とキーンの救出の助力をマークに頼んだ。
やっかい事に巻き込まれることを嫌い,一度はジュエルの願いを断ったマークだったが,我が身を犠牲にすることをも厭わないジュエルの態度に打たれ,協力を約束する。

パブ「まずいジンの店」での情報収集の結果,飾り銃が大英博物館で保護されていることを知ったマークは,貴族階級の名士トレバー卿宅を訪れ,エーテル銃を取り戻す方法を相談する。合法的な方法は思い当たらず,無断で拝借することに。大英博物館を遊び場として育ったトレバー卿の娘,パトリシアが仲間に加わり,大英博物館にエーテルブラストを盗みに行くことになる。

大英博物館からはRPGでおなじみのパーティーバトルが始まるので,雑貨屋で鎧,武器屋で銃と弾,薬屋で回復薬,気付け薬,毒消し等を入手,装備してから入館すること。
ローダナムはHPを100回復,滋養強壮剤は400回復。
ゲーム終盤まではキャラのHPが800を超えることはなかったが,資金の数値を弄ってズルしたから正規プレイの場合は不明。
なお,所持金はセーブデータの024CHからダブルワード形式で記録されている。
ドイツに渡るまでは024CHからワード形式でFFFFくらいにとどめておくくらいが無難。

大英博物館には,愛野さん,木野さん,月野さん,水野さん,火野さん,赤ずきんならぬ茶々,大人に変身するピンク色の髪の魔法少女などの肖像画が飾ってある。
博物館をうろつくうちにパトリシアが抜け道(火野さんの肖像画の左)を見つけて奥に入れる。
奥の部屋のどん詰まりにドアがあるが鍵がない。部屋の北東の上側,右から2番目の棚に鍵が入っているので,鍵を使ってどん詰まりのドアが開かないことを確認後,そのすぐ下の棚をその鍵で開けるとドアの鍵が手に入る。
ストーナー,アドラーと対決して,エーテルブラストその他を手に入れる。

マークの部屋で目覚めた後,トレバー卿のところに行くと,オックスフォード大学の図書館で薔薇十字団のことを調べるようアドバイスを受けて,オックスフォード大学へ。
ここに入ると有り金全部奪われるので,武器,防具,薬類を買えるだけ買っておくこと。また,ジュエル,パトリシアは当分退場するので校内に入る前にこの2人の装備は外しておくこと。

図書館に案内してくれた親切な学生はジュエルとパトリシアを連れ去ってしまう。
マイクロフトが仲間になり,2000シリング持って装備類の追加をした後,再びオックスフォード大学へ。
ジュエルたちがさらわれた校舎をひととおり探した後,マイクロフトが校舎を出ることを勧めるので,校門の4人組の女性から話を聞いて,再び校舎に戻る。
パトリシアに引き続いてジュエルを救出する。

ようやくトレバー卿宅に帰ったのも束の間,酒場でパトリシアが再びさらわれる。
エーテルブラストとジュエル,シャイニング・スター等を一式引き渡さなければパトリシアの無事は保証しないという血文字がマークの家の玄関ドアに書かれた。しかし,エーテルブラストはオックスフォード大学で奪われたままだ。

パトリシア誘拐を報告するためにトレバー卿宅に赴くと,華僑と称する男,林白楽がエーテルブラストを売りに来たが商談は決裂し,マークたちは林の隠れ家ビッグベンへ向かうことに。
ビッグベンには毒攻撃をする敵がおり,毒を受けると行動不能になるので(攻撃対象にはなる),毒消しを必ず持参すること。
まあ1階の宝箱にも入ってるけど。

ビッグベン内ではエンカウント多数のため全体の構造を把握しにくいため,各階の地図を作成した。
画像をクリックすると原寸大地図が開く。なお,空の宝箱はないので地図上では開いている宝箱も閉じており,中身が入っている。
階段経由では3階から4階に上がれないので3階中央上部の床から2階に転落すること。

1階  2階 

3階  4階 

ビッグベン4階の林の部屋に行くと,林は男と言い争いをしており,窓から飛空挺に乗って逃げ出してしまう。
逃げ出した部屋からエーテルブラストを発見する。林と言い争いをしていた男,龍馬とともにビッグベンから脱出する。

パブに到着したマークたちは,龍馬と情報交換をする。
寺田屋で新撰組に斬り殺された龍馬は影武者で,仲間たちに逃がされた龍馬は次代を見越してイギリスに渡ってきたといい,未来の日本のために見聞を広めるつもりなのだ。
龍馬はイギリスに渡ってきてから世話になった女性が薔薇十字団の一員だと語っていたことから,彼女にもう一度会いたいとの思いから薔薇十字団についての情報を求めて,林に直談判を申し入れていたのだ。
龍馬は,マークたちが語る十字団の非道ぶりに驚きつつも,そのような団体から彼女を救いたい,自分を仲間に入れてくれと申し入れる。

マークたちは,セントパンクラスからシャーウッドの森,通称あやかしの森の中にある荒廃した神殿「聖霊の家」に向かう。
もちろんその前に武器,防具,薬類を買えるだけ買っておく。
森に入る前に森の主の話を聞いておけば,あやかしの森は適当に歩いていれば抜けられる。

下画像マークの左上の道を渡ればとりあえず森は抜ける。1回目は通れないが2回目に来ると渡れるようになっているはず。


神殿内では森の主の忠告どおりに行動すればいきなり地図になかった別の像の前にワープできる。
再現できるほどの法則性は見つからなかったので,頑張るしかない。

神殿内ではパトリシアが薔薇十字団のアドラー,ストーナーによりなぶり者にされていた。


マークたちが,アドラー,ストーナーを倒すと,命尽きんとする2人に色欲過多な降魔たちが襲いかかり,その最後の生の力を容赦なくむさぼり食らうと,どこともなく消え去って行った。薔薇十字団の構成員は,錬金術により魔の物を操る代償として,穏やかな死を迎えることはできないのだ。


傷心のパトリシアを連れた一向がマークの家に戻ると,再び玄関のドアに血文字が。
「十字団に逆らうもの,すべての者に死を!」
怯えるパトリシアをトレバー卿宅にジュエルが送り届ける間に,室内のマークの机を見ると,シャイニング・スターをドイツに持参するよう求める文字を見付ける。そして,その筆跡は龍馬の探し求める女性の筆跡だった。

一行は装備を整えると,ドイツを目指してウォータールー駅に向かい,豪華客船サンライズ号に乗り込む。
船内での戦闘要員はマーク,パトリシア,龍馬なのでそれなりの装備をしておくこと。
サンライズ号で船員からボディチェックを受けたマークはエーテルブラストを取り上げられてしまう。
その船員は林白楽の変装した姿だった。かくして,マークたちは林を探して船内捜索を行う。
林を見付けたはしたものの,薔薇十字団のサザーランドの計画により,サンライズ号は大爆発を起こして沈没してしまう。

かろうじてサザーランドを退けると,降魔に弄ばれるサザーランドを尻目に4人は脱出艇で逃れたが,脱出艇に乗れなかったマークは行方不明となってしまう。


浜辺に打ち上げられたマークは記憶を失い,シリルと名乗る女性に助けられた。


シリルは名前を失ったマークに,龍馬と名付けた。日本の男性に付けられるものだと知りながら・・・。
数日を経て,マークはすっかりシリルにうち解け,頼まれた留守番を断ると,シリルが行くという山の中の洞窟の祭壇に同行した。
シリルはその場所を「精霊の家」と説明した。
ステイプルト,クレーテルとともにシリルたちの前に現れた薔薇十字団指導者アイリーンは,龍馬ことマークを見て驚きを隠せなかった。
マークが席を外した後,シリルはマークの処刑を約束させられる。

席を外したマークは,キーン・フリントと出会い,ここが薔薇十字団の本拠地「精霊の家」であることなどを告げられるが思い出すことはできない。
キーンは,エーテル製の弾丸を預けるとマークに別れを告げる。

マークの処刑を約束して家に戻ったシリルだったが,マークを傷つけることなどできず,別れを決意してマークと一夜をともにする。
そうとは知らないマークは,翌日シリルに連れられて行った町外れの一軒家で待つようにシリルに言われ,帰らぬシリルを待ち続けた。


自分が捨てられたのではないかとマークが思い始めたころ,同じ家から出現し,マークの世話をシリルから頼まれたという謎の東洋人林からシリルの託した手紙を受け取る。
そこにはシリルがマークと別れざるを得ない事情が書かれており,マークは納得がいかないながらも林に連れられて仲間たちが待つというブレーメンのパブに向かう。

仲間たちのもとにマークを送り届けた林は,なぜかエーテルブラストをマークたちに返す。エーテルブラストを薔薇十字団に高値で売りつけようとして命を奪われそうになったところをシリルに助けられた林には彼女に返すべき恩があったのだ。

マークの話から,龍馬の探していた女性がシリルだったことも判明し,マークとエーテルブラストが1度に戻ってきたことで,一同は喜びに沸く。

仲間たちの下を離れて床についたマークのもとをジュエルが訪れる。ジュエルはマークと恋仲だったとウソをついてマークに抱かれることを求めた。出会った日,マークに身体を与えて協力させようとしたときには決して歓喜の表情をうかべることのなかったジュエルが,美しい笑顔を浮かべて初めての痛みに耐えるのだった。そしてマークは記憶を取り戻した・・・(ヲイヲイ)。(都合により画像を一部昭和風に加工してあります)


思いがけずマークが早々に記憶を取り戻したことで,相手の虚を突くべく,一行は敵の本拠地である「精霊の家」への乗り込みを敢行する。
しかし,精霊の家は既にもぬけの殻であり,待ち伏せていたイヴィリーンを退けた一行は,再びブレーメンのパブに戻って行く。
パブではイヴィリーンの敗北に備えて多数の十字団員が待ち伏せをしており,シャイニング・スターを身に付けたジュエルを奪い去っていく。一行はシリルの使いとなった十字団員の働きにより辛くも皆殺しを免れるが,そのシリルもまたマークを逃がしたことにより拷問され,飛行船レッド・ツエッペリン内に幽閉の身となっていた。

薔薇十字軍の活動が,すでに巨大飛行船レッド・ツエッペリンに移されていることを知った一行はフュッセン山中に停泊中のレッド・ツエッペリンを目指す。
ジュエルの身に付けたシャイニング・スターがレッド・ツエッペリンのエーテルリアクターにはめ込まれれば,もはや世界は終わるのだ。
旅立ちを前にして,パトリシアはマークに抱かれることを求めるが,その願いは叶えられなかった。(都合により画像を一部昭和風に加工してあります)


レッド・ツエッペリンの下に到着したマークたちの前に,薔薇十字団最強の門弟クレーテルが立ちはだかる。




しかし,この自称最強の門弟は,マークたちのレッド・ツエッペリンへの乗り込みを阻止するための時間稼ぎ役に過ぎなかった。倒されもしないので,こいつにはH画像すらない。ふざけんな。
マークと龍馬の2人だけが辛うじてレッド・ツエッペリンへの搭乗を果たす。
乗り込んだら下に降りたあと,左にしか進めないのでずんずん進む。

洗脳されたシリルの相手は龍馬に任せて先に進む。
マークが機関室のあるブロックに到達したときには,すでにエーテルリアクターにシャイニング・スターがはめ込まれていた。
機関室には空間の歪みが発生しており,マークの銃弾もアイリーンには機関室内には届かない。
アイリーンは手に入れた力を確認するように,イギリス・エンフィールドに向けてエーテルキャノンを発射する。
その攻撃力を目にして,アイリーンは勝ち誇って哄笑する。





キーン「エーテルだ!弾を!」

弾を受け取ったのが記憶喪失状態のときだったせいなのか,マークの頭の回転は悪く,ゆっくりと考えた末に,エーテルブラストにエーテルの弾をセットすると,エーテルリアクターに向けて発砲した。

エーテルリアクターは崩壊してゆく。
アイリーンを倒し(きっちり戦闘があるのにH画像なし!薔薇十字団は魔物云々で死ぬ前に降魔にいたぶられるとかいう設定はどうなった!),レッド・ツエッペリンも墜落を開始したが,ジュエルの命を繋いでいたシャイニング・スターがエーテルリアクターから取り出せない。
とりあえずキーンの持つ不純物の混じったエーテル結晶でジュエルの命を繋ぎつつ,脱出を試みるが,すでに脱出艇は残っていなかった。

キーンとマークが死を覚悟したそのとき,イギリスに帰る途中の,実はいい人の林が飛行船の墜落を目撃して,飛行船の乗降口までやってきた。
龍馬とシリルを連れ帰りたいマークは,船内の龍馬たちの姿を確認して飛空挺に戻る。
ジュエルの命を繋いでいた不純物を含んだエーテルは1度臨界を迎えて崩壊したが,なぜか再結晶して(ヲイヲイ)息絶えたジュエルも息を吹き返した(ヲイヲイ)。

ロンドンに平和が戻りはじめ,マークの仲間たちもそれぞれの生活に戻って行く。
そして,シャイニング・スターなしでも生活できるまでに回復したジュエル(ヲイヲイ)がマークの下を訪れる。

STAFF
エグゼクティブ・プロデューサ みっちゃん
プロデューサ ぽち屋
グラフィック制作総指揮 Boa_UP
原画 聖少女
デジタイズ みんきぃ,Boa_UP,聖少女,鈴奈
マップデザイン みんきぃ
ドットキャラクターデザイン 鈴奈
シナリオプログラム ぱかりん
画面デザイン ぽち屋
音楽 ノブスケ
プログラム あんぽん
プロダクティブ・マネージャー TakaTan.
スペシャル・サンクス えーこねーさん
スーパー・ウルトラ・サンクス よなたん,伊藤康夫
Copyright(C)1994 アクティブ・ソフトウェア

十数年ぶりにリプレイしてみました本作ですが,レビュー記事を作成してみての感想は,ふざけんなの一言でした。
当時,麻雀幻想曲IIIとどちらを先にプレイしたか忘れましたが,月とすっぽん。
とはいえ,当時,パソコンエロゲー初心者だった私にはこの作品のダメさがよく分からなかったのですが,ダンジョン内のエンカウントの高さには流石に辟易しました。
今回は途中からセーブデータの資金をいじって最強武器を揃えてのプレイでしたが,そうでもないとちょっとやり切れないエンカウント率でしたね。
記事内にも書きましたが,セーブデータの024CH以下に資金データがあるので,これを書き換えます。
舞台がドイツに移ると,通貨単位がシリングからマルクになり,資金データを4で割って端数を切り捨てた数値が資金として表示されます。ダブルワード形式なのでFを8つ並べてみると所持金が0マルクになったのである程度の上限はあるみたいです。私は65536の4倍にしたので,16進数では40000になってたような。

で,どこがふざけんななのかというと,ヒロイン側が景気よく脱いでくれること(ジュエル全画面CG7枚,うち2画面CG3枚,パトリシア全画面CG7枚,うち2画面CG4枚。ジュエルはゲーム画面内でも脱ぐ。あまりに脱いでばかりなので記事中に引用する画像に困った。)は大変にありがたいのですが,

最初の敵アドラーとストーナーは2人併せて2画面CG1枚(記事に引用),
サザランドは全画面CG1枚,
半ば味方のシリルは全画面CG3枚うち2画面CG2枚,
イヴィリーンは2画面CG1枚,
クレーテルなし,
ステイプルトに至ってはダンジョンのデフォルメキャラとしてセリフをしゃべっているが画面には1度も登場せず,
ラスボスのアイリーンもオープニングの後ろ姿とダンジョンのデフォルメキャラ以外はCGすら存在しないというクソ仕様。

('12/07/11追記 ブックマークの古萌え画像掲示板さんで配布されているMLD(Multi Graphic Loader)を使ったところ,オープニング用と思われる複数のボツ画像がGUNBLAZEのインストール先ディレクトリ内に見つかり,そこにアイリーンの画像があったので,2枚だけご紹介します。



なお,後述する落下するジュエルの画像なども画像データ自体は同ディレクトリ内に含まれていました。 追記終了)

敵キャラを女性にしたのは戦闘勝利時にご褒美のHCGを出すためだろうに,純然たる敵キャラのHCGは2画面CG2枚,全画面CG1枚しか存在しないという驚愕の事実。
こちとらセーブデータ弄って資金に任せた最強装備で力押しに片付けたからよかったようなものの,銃は暴発して使えなくなる,弾詰まりが起きれば2ターン無駄になるという厳しい戦闘設定に対し,あまりにもご褒美が少ない!大体,ラスボスのアイリーンのご褒美CGどころかゲーム画面内に顔の分かるCGすらないってどういうこと?エロゲーを舐めとんか!十数年前の俺の時間返せ!と思いました。
ご褒美CGもまともに用意しないで,薔薇十字団の構成員は死に際して降魔に弄ばれるとか,中途半端な設定するなっつうの。期待するじゃないか。触手はディーオーに任せとけ。

ゲームシナリオ的にもツッコミどころ満載で書く気はあったのですが,HCGを分析したらもう突っ込む気力も失いました。
こんなのがセガサターンに移植されてるんだもんなあ。アイリーンの顔も見られないままのシナリオでSSに移植したのだとしたら,ちょっと制作者の人間性を疑うレベル。そのままなんだろうけど。

マニュアルを確認したところ,ちゃんとアイリーンの顔もデザインされているようで(当たり前だ),パッケージ裏の飛行船から落下するジュエルやジュエルの顔アップ画像などがゲーム中に出てこないことからすると,時間切れで描くべき絵が落とされているということなのかもしれない。
パッケージ裏の左側の女性がアイリーンらしい。ちゃんとゲーム中にも描けよな。

パトリシアが可愛らしくけなげだし,HCGもまあまあ高水準で嫌いなゲームじゃないんだけど,プレイはあまりおすすめしません。
どうしてもやりたければ改造必須かな。

以下,自分用メモ
Np2からの切り取り範囲
(80,0)-(560,300)

<<著作権に関して>>
本記事に引用している全てのソフトの名称・画像の著作権・その他権利は、制作、販売されたソフトハウス、メーカー、または作者様に帰属します。本サイトでの上記著作物の取扱いは、著作権など各権利関係を侵害することが目的ではありません。問題などある場合は、メール(gekigangarあっとmail.goo.ne.jp)にてその旨お知らせください。

とりあえず更新と

2012-06-04 19:34:05 | Weblog
よそのブログでよくあることだけど,60日間更新がないと,ブログのトップに広告が表示される仕様になるそうです。てか,もうなってるのかも。
麻雀幻想曲I,IIはレビュー用にプレイずみなので,そのうちレビュー記事で上げます。
その次は,ELLE(エルフ)か,FOXY2(エルフ)のどっちをやろうかなあ・・・。