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

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

レトロエロゲーパッケージ画像集

2012-07-15 01:17:55 | PC98ソフト その他
こんばんは,管理人です。

ゲームのタイトル画面を一覧できるページというのは,前から記事へのリンクがてら設置していましたが,パッケージ画像を次々と見られるページはありませんでした。

そこで,以前からgooブログが,開設しろと五月蠅くせきたてるフォトチャンネルという機能を使いまして,手持ちパッケージ画像をあいうえお順で,順次見てもらえるものを作りました。
記事同様,パッケージ画像データもおいおい追加していく予定です。

お前のコレクションはぬるい!このゲームのパッケージもアップせんかい!という熱いご意見をお持ちの方は,縮小データで構いませんのでご提供いただけると幸いです。

レトロエロゲーパッケージ画像集作業進行状況(追記あり)

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

うれしい話

2012-07-13 09:06:33 | Weblog
おはようございます。
朝から記事を書くのはとっても珍しい管理人です。
ちょっと本業が忙しく,こちらの記事用に考えている企画に着手できていません。

そんな中でも,ブログへのアクセスについての監視は怠っていないあたり,アクセス乞食の面目躍如ですが。
で,うれしかったのが,今朝,うちのブログへのリンク元をチェックしたところ,1位に見慣れないアドレスが。

飛んでみると,
【コラム・ネタ・お知らせ】PCゲームの「声」はみんな声優さんの演技によって成り立ってる。今回のテーマはPCゲームにおける「声」について!
というタイトルの記事。

うちで取り上げたゲームの中で声優さんが声を入れてるなんて,妖獣戦記とか,Bactaぐらいしか思い当たらないけど,前者では声云々と書いた覚えはないし,後者では岩坪理江さんや鳥海勝美さんに言及したぐらい。
何でうちへのリンクが付くんだろう?

記事の書き出しは,「こんにちわ!ビジュアルアーツのvavaしゃちょーです。」
ん?何かこの人の記事,前にも読んだ気がする。

読み進めてみると,すぐに答えが出た。

GUNBLAZE ガンブレイズですとー?

麻雀幻想曲シリーズの陰でさほど脚光を浴びることもなく,うちの記事の中でもたぶんニーズの低いままにトップページから消えていったガンブレイズの記事が生きるとは。

ビジュアルアーツさんといえば,ヌークシリーズのボンびぃボンボン!さんではありませんか。
所在地が本庄で,勤め先から余裕で自転車で行ける位置。お礼とご挨拶にお邪魔したいくらいだわ。

しかも,vavaしゃちょーって,ヌークのシナリオを作られた方ではないですか。おまけに,ヒロインのピリルでなくレミー萌えって・・・,最高です(京都大学アニメーション同好会主催 屋内講演企画「また奥深い講演が生まれちまったな… 2011」行ってきた。 - 戯れ言を参考にしました。)。

昔語り編の第1回「ちょこちょこっと作れると思ったのよ」第2回 「とにもかくにも、ビジュアルアーツは始まった」第3回 「幹部脱退にすごく悩んだ結果が…今のビジュアルアーツです」などは読ませてもらっておりました。ヌークの1作目って1万本も売れたんだ・・・。中古ゲーム屋で置いてないところはなかったもんな。

そんなわけで,お世話になったメーカーの方に1記事ながらリンクを貼ってもらえたことがうれしく,感謝を表す意味でちょっと脱線記事を書いてみました。
それにしても,自分の昔のゲーム紹介ページ,わりとあっさりしてるなあ。
現行のこってり紹介とどっちがいいのか,また考えておきます。

ではまた。

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

2012-07-09 23:15:03 | レトロパソコンのお作法
晴れのちおおさわぎ!(PC-98,カクテル・ソフト)ADVSHELL.COM解析(その2)からの続き。
最初の1行だけ重複してます。

3B66:0250 E8 0005 call sub_2 ; (0258)
;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:0250
;##########################################################################

3B66:0258 sub_2 proc near ; CX=03D6H,DX=03B7H(='ADVH.EXE')
3B66:0258 0E push cs
3B66:0259 07 pop es ; CS=ES,パラメータブロックセグメントアドレス
3B66:025A FE 06 03A0 inc byte ptr [03A0h] ; (3B66:03A0=33H='3')インクリメントして34H='4'
3B66:025E ,BB 041E mov bx,041Eh ; BX=041EH,パラメータブロックオフセットアドレス
; パラメータブロックはCS:041EH
3B66:0261 C7 07 0000 mov word ptr [bx],0 ; DS:[041EH]=0000H ;041EH以下のメモリ書き換え
3B66:0265 89 4F 02 mov [bx+2],cx ; DS:[0420H]=CX=03D6H ;041E 00 00
3B66:0268 8C 5F 04 mov [bx+4],ds ; DS:[0422H]=DS ;0420 D6 03 DS DS 5C 00 DS DS
3B66:026B C7 47 06 005C mov word ptr [bx+6],5Ch ; DS:[0424H]=005CH ;0428 6C 00 DS DS
3B66:0270 8C 5F 08 mov [bx+8],ds ; DS:[0426H]=DS
3B66:0273 C7 47 0A 006C mov word ptr [bx+0Ah],6Ch ; DS:[0428H]=006CH
3B66:0278 8C 5F 0C mov [bx+0Ch],ds ; DS:[042AH]=DS
3B66:027B B8 4B00 mov ax,4B00h ; プログラムのロードと実行
; DS:DX=パス名の位置,ES:BX=パラメータブロックの位置
; BX=(03D6=10 20 5C 4D 45 53 5C 48 4F 30 30 30 30 2E 4D 45 53 0D)
; ^P半角スペース\MES\HO0000.MESリターンキー)
3B66:027E CD 21 int 21h ; DOS Services ah=function 4Bh
; run progm @ds:dx, parm @es:bx INT 0F5Hのアドレスにロードした?
3B66:0280 BA 0383 mov dx,383h ; 文字列'プログラムが起動できません。(4)$'
3B66:0283 C3 retn
sub_2 endp


3B66:0253 5E pop si ; SI復帰,SI=0418H
3B66:0254 72 C2 jc 0218h ; Jump if carry Set エラーなければCF=0でスルー,エラーがあればCF=1なので0218Hへ
3B66:0256 EB C9 jmp short 0221h ; (0221)

3B66:0221 loc_4: ; xref 3B66:024D, 0256
3B66:0221 ,8A 04 mov al,[si] ; AL=[0418H]=01H
3B66:0223 84 C0 test al,al ; (3B66:0418=01H),AL=00Hでなければ,ZF=0
3B66:0225 75 03 jnz 022Ah ; Jump if not zero, ZF=0なら022AHへ
3B66:0227 loc_5: ; xref 3B66:0227
3B66:0227 EB FE jmp short loc_5 ; (0227)
3B66:0229 90 db 90h
3B66:022A loc_6: ; xref 3B66:0225
3B66:022A 8B 4C 01 mov cx,[si+1]  ; CX=03D0H=[0419H]
3B66:022D 8B 54 03 mov dx,[si+3] ; DX=03AEH=[041BH]
3B66:0230 83 C6 05 add si,5 ; SI=041DH
3B66:0233 FE C8 dec al ; AL=00H
3B66:0235 74 18 jz 024Fh ; Jump if zero 0なので024FHへ

(省略)
3B66:024F loc_9: ; xref 3B66:0235, 023D
3B66:024F 56 push si ; SI退避,SI=041DH
3B66:0250 E8 0005 call sub_2 ; (0258)

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

3B66:0258 sub_2 proc near ; CX=03D0H,DX=03AEH(='HARE.EXE')
3B66:0258 0E push cs
3B66:0259 07 pop es ; CS=ES,パラメータブロックセグメントアドレス
3B66:025A FE 06 03A0 inc byte ptr [03A0h] ; (3B66:03A0=34H='4')インクリメントして35H='5'
3B66:025E ,BB 041E mov bx,041Eh ; BX=041EH,パラメータブロックオフセットアドレス
; パラメータブロックはCS:041EH
3B66:0261 C7 07 0000 mov word ptr [bx],0 ; DS:[041EH]=0000H ;041EH以下のメモリ書き換え
3B66:0265 89 4F 02 mov [bx+2],cx ; DS:[0420H]=CX=03D0H ;041E 00 00
3B66:0268 8C 5F 04 mov [bx+4],ds ; DS:[0422H]=DS ;0420 D0 03 DS DS 5C 00 DS DS
3B66:026B C7 47 06 005C mov word ptr [bx+6],5Ch ; DS:[0424H]=005CH ;0428 6C 00 DS DS
3B66:0270 8C 5F 08 mov [bx+8],ds ; DS:[0426H]=DS
3B66:0273 C7 47 0A 006C mov word ptr [bx+0Ah],6Ch ; DS:[0428H]=006CH
3B66:0278 8C 5F 0C mov [bx+0Ch],ds ; DS:[042AH]=DS
3B66:027B B8 4B00 mov ax,4B00h ; プログラムのロードと実行
; DS:DX=パス名の位置,ES:BX=パラメータブロックの位置
; BX=(03D0=02 20 33 0D)
; B:半角スペース'3'リターンキー)
3B66:027E CD 21 int 21h ; DOS Services ah=function 4Bh
; run progm @ds:dx, parm @es:bx INT 0F4Hのアドレスにロードした?
3B66:0280 BA 0383 mov dx,383h ; 文字列'プログラムが起動できません。(5)$'
3B66:0283 C3 retn
sub_2 endp

3B66:0253 5E pop si ; SI復帰,SI=041DH
3B66:0254 72 C2 jc 0218h ; Jump if carry Set エラーなければCF=0でスルー,エラーがあればCF=1なので0218Hへ
3B66:0256 EB C9 jmp short 0221h ; (0221)

3B66:0221 loc_4: ; xref 3B66:024D, 0256
3B66:0221 ,8A 04 mov al,[si] ; AL=[041DH]=00H
3B66:0223 84 C0 test al,al ; (3B66:041D=00H),ZF=1
3B66:0225 75 03 jnz 022Ah ; Jump if not zero, ZF=1なのでスルー
3B66:0227 loc_5: ; xref 3B66:0227
3B66:0227 EB FE jmp short loc_5 ; (0227) 無限ループ
3B66:0229 90 nop

;**********************************************************************************************
;プログラムロードエラー発生時
3B66:0218 sub_1 proc near
3B66:0218 loc_1: ; xref 3B66:0254
3B66:0218 E8 0069 call 0284h ; (0284) エラー文字列表示ルーチンへ

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:0218 ; エラー文字列表示ルーチン
;##########################################################################

3B66:0284 sub_3 proc near
3B66:0284 B4 09 mov ah,9 ; DX=0383Hで飛んできた。文字列 'プログラムが起動できません。(5)$'
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:02B5 90 db 90h

;##########################################################################
;
; External Entry Point 致命的エラー(INT24)発生時の独自割込処理
;
;##########################################################################

3B66:02B6 int_24h_entry proc far ; xref 3B66:0635
3B66:02B6 55 push bp ; 各レジスタ退避
3B66:02B7 57 push di
3B66:02B8 56 push si
3B66:02B9 1E push ds
3B66:02BA 06 push es
3B66:02BB 53 push bx
3B66:02BC 51 push cx
3B66:02BD 52 push dx
3B66:02BE 50 push ax
3B66:02BF F6 C4 80 test ah,80h ; AHの第7bitが1でなければ0
3B66:02C2 75 4E jnz 0312h ; Jump if not zero
; AHの第7bitが0ならALを0にしてAX以外のレジスタ復帰。
3B66:02C4 0E push cs
3B66:02C5 1F pop ds ; CS=DS
3B66:02C6 04 41 add al,41h ; AL=41H 'A'
3B66:02C8 A2 043F mov 043Fh,al ; (3B66:043F=41h)
; エラー表示内のドライブレター表記部分に,
; ドライブレターの文字コードを代入。
3B66:02CB 8B DF mov bx,di ; BX=DI
3B66:02CD 2A FF sub bh,bh ; BH=00H
3B66:02CF 83 FB 0C cmp bx,0Ch ; BXと0CHを比較(BHが00Hなので事実上,BL(DL)と0CHとの比較)
3B66:02D2 73 3E jae 0312h ; Jump if above or =
; BL>=0CHなら,ALを0にして各レジスタ復帰(02C2Hと同じ)
3B66:02D4 B8 A000 mov ax,0A000h ; AX=0A000H
3B66:02D7 8E C0 mov es,ax ; ES=0A000H,テキストVRAMセグメント
3B66:02D9 ,BF 0F00 mov di,0F00h ; DI=0F00H
3B66:02DC ,BE 042E mov si,042Eh ; SI=042EH
3B66:02DF D1 E3 shl bx,1 ; Shift w/zeros fill,SHIFT LOGICAL LEFT 左シフトbit7をCFに,bit0を0に
3B66:02E1 E8 FFA8 call 028Ch ; (028C)

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:02E1, 02E8, 02EE
;##########################################################################

3B66:028C sub_4 proc near
3B66:028C FC cld ; Clear direction ; ディレクションフラグを0(増加)にリセット
3B66:028D B4 65 mov ah,65h ; AX=6500H
3B66:028F EB 0B jmp 029Ch ; (029C)
3B66:0291 loc_11: ; xref 3B66:029F
3B66:0291 26: 88 A5 2000 mov es:[2000h],ah ; (A000:2000=65h)
3B66:0296 26: 88 05 mov es:[di],al ; (A000:0F00=00H)
3B66:0299 83 C7 02 add di,2 ; DI=0F02H
3B66:029C loc_12: ; xref 3B66:028F
3B66:029C AC lodsb ; String [si] to al, DS:[SI]で示されるメモリのバイト値をALレジスタに転送し,SIの値を1増加または減少させる
; (042Eh=20H),SIを042Fhに・・・SI=0456HでAL=00H,SI=0457Hでルーチン終了
3B66:029D 0A C0 or al,al ; Zero ? AL=20HなのでZF=0, [SI]=0456Hになるまで00Hなし。ES:[DI]に042EHから0456Hまでのデータをロード
; 半角スペース10個,'ドライブ A: デ エラー ハッセイ ・・・ ',00H,Aはエラーの発生したドライブによって変動
3B66:029F 75 F0 jnz 0291h ; Jump if not zero

3B66:02A1 C3 retn
sub_4 endp

3B66:02E4 8B B7 04FA mov si,[04FAh] ; (3B66:04FA=457h)
3B66:02E8 E8 FFA1 call sub_4 ; (028C)

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:02E1, 02E8, 02EE
;##########################################################################

3B66:028C sub_4 proc near
3B66:028C FC cld ; Clear direction ; ディレクションフラグを0(増加)にリセット
3B66:028D B4 65 mov ah,65h ; AX=6500H
3B66:028F EB 0B jmp 029Ch ; (029C)
3B66:0291 loc_11: ; xref 3B66:029F
3B66:0291 26: 88 A5 2000 mov es:[2000h],ah ; (A000:2000=0E1h)
3B66:0296 26: 88 05 mov es:[di],al
3B66:0299 83 C7 02 add di,2 ; DI=0F04H
3B66:029C loc_12: ; xref 3B66:028F
3B66:029C AC lodsb ; String [si] to al, DS:[SI]で示されるメモリのバイト値をALレジスタに転送し,SIの値を1増加または減少させる
; (0457h=CCH),SIを0458hに・・・・・・SI=0474HでAL=00H,SI=0475Hでルーチン終了
3B66:029D 0A C0 or al,al ; Zero ? AL=CCHなのでZF=0
; 'プロテクトシール ヲ ハガシテ クダサイ。 ',00H
3B66:029F 75 F0 jnz 0291h1 ; Jump if not zero

3B66:02A1 C3 retn
sub_4 endp


3B66:02EB ,BE 04ED mov si,[04ED] ; (3B66:04ED=20h)
3B66:02EE E8 FF9B call sub_4 ; (028C)

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:02E1, 02E8, 02EE
;##########################################################################

3B66:028C sub_4 proc near
3B66:028C FC cld ; Clear direction ; ディレクションフラグを0(増加)にリセット
3B66:028D B4 65 mov ah,65h ; AX=6500H
3B66:028F EB 0B jmp 029Ch ; (029C)
3B66:0291 loc_11: ; xref 3B66:029F
3B66:0291 26: 88 A5 2000 mov es:[2000h],ah ; (A000:2000=0E1h)
3B66:0296 26: 88 05 mov es:[di],al
3B66:0299 83 C7 02 add di,2 ; DI=0F06H
3B66:029C loc_12: ; xref 3B66:028F
3B66:029C AC lodsb ; String [si] to al, DS:[SI]で示されるメモリのバイト値をALレジスタに転送し,SIの値を1増加または減少させる
; (04EDh=20H),SIを04EEhに・・・,SI=04F8HでAL=00H,SI=04F9Hでルーチン終了
3B66:029D 0A C0 or al,al ; Zero ? AL=20HなのでZF=0
; 半角スペース11個,,00H
3B66:029F 75 F0 jnz 0291h1 ; Jump if not zero

3B66:02A1 C3 retn
sub_4 endp

3B66:02F1 E8 FFAE call sub_5 ; (02A2) ブザー鳴動処理

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:02F1 ブザー鳴動処理
;##########################################################################

3B66:02A2 sub_5 proc near
3B66:02A2 B0 06 mov al,6
3B66:02A4 E6 37 out 37h,al ; port 37h I/O Non-standard
; ポート番号037H(8255Aのコントロールレジスタ)に
; 06Hを出力する。
; 06h ブザー 06h=鳴動
; http://www.webtech.co.jp/company/doc/undocumented_mem/io_syste.txt
3B66:02A6 2B C9 sub cx,cx ; CX=00H

3B66:02A8 locloop_13: ; xref 3B66:02A8 LOOP4つ分のウエイトか?
3B66:02A8 E2 FE loop locloop_13 ; Loop if cx > 0


3B66:02AA locloop_14: ; xref 3B66:02AA
3B66:02AA E2 FE loop locloop_14 ; Loop if cx > 0


3B66:02AC locloop_15: ; xref 3B66:02AC
3B66:02AC E2 FE loop locloop_15 ; Loop if cx > 0


3B66:02AE locloop_16: ; xref 3B66:02AE
3B66:02AE E2 FE loop locloop_16 ; Loop if cx > 0

3B66:02B0 B0 07 mov al,7
3B66:02B2 E6 37 out 37h,al ; port 37h I/O Non-standard
; ポート番号037H(8255Aのコントロールレジスタ)に
; 07Hを出力する。
; 07h ブザー 07h=停止
; http://www.webtech.co.jp/company/doc/undocumented_mem/io_syste.txt
3B66:02B4 C3 retn
sub_5 endp

3B66:02F4 E8 0027 call sub_6 ; (031E)

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:02F4, 0737
;##########################################################################

3B66:031E sub_6 proc near
3B66:031E loc_20: ; xref 3B66:032A
3B66:031E B4 01 mov ah,1 ; キーバッファ状態のセンス(キーバッファ内先頭1文字分)
; BH=00H,キー入力データなし
; BH=01H,キー入力データあり,AH=キーコード,AL=キーデータ
3B66:0320 CD 18 int 18h ; ROM basic
3B66:0322 53 push bx ; BX退避
3B66:0323 B4 00 mov ah,0 ; キーデータの読み出し(1文字の入力待ち)
3B66:0325 CD 18 int 18h ; ROM basic キーバッファ内先頭1文字分のキー入力データを取り出し,
; AH=キーコード,AL=キーデータを出力
3B66:0327 5B pop bx ; BX復帰
3B66:0328 84 FF test bh,bh ; BHは00Hか?キー入力データなしなら結果は0
3B66:032A 75 F2 jnz loc_20 ; Jump if not zero キー入力データがあれば031Ehへループ
3B66:032C C3 retn
sub_6 endp

3B66:02F7 ,BF 0F00 mov di,[0F00H] ; (A000:0F00=00h)
3B66:02FA B9 0050 mov cx,50h ; CX=0050H,50H回セット

3B66:02FD locloop_17: ; xref 3B66:030B
3B66:02FD B8 E120 mov ax,0E120h
3B66:0300 26: 88 05 mov es:[di],al
3B66:0303 26: 88 A5 2000 mov es:[2000],ah ; (A000:2000=0E1h)
3B66:0308 83 C7 02 add di,2
3B66:030B E2 F0 loop locloop_17 ; Loop if cx > 0

3B66:030D 58 pop ax ; AX復帰
3B66:030E B0 01 mov al,1 ; AL=01H
3B66:0310 EB 03 jmp short loc_19 ; (0315)
3B66:0312 loc_18: ; xref 3B66:02C2, 02D2
3B66:0312 58 pop ax ; AX復帰
3B66:0313 2A C0 sub al,al ; AL=00H
3B66:0315 loc_19: ; xref 3B66:0310
3B66:0315 5A pop dx ;各レジスタ復帰
3B66:0316 59 pop cx
3B66:0317 5B pop bx
3B66:0318 07 pop es
3B66:0319 1F pop ds
3B66:031A 5E pop si
3B66:031B 5F pop di
3B66:031C 5D pop bp
int_24h_entry endp


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

3B66:031D int_06h_entry proc far ; xref 3B66:061F
3B66:031D CF iret ; Interrupt return 割込からのリターン命令
int_06h_entry endp



;* No entry point to code

3B66:0367 90 db 90h
3B66:0368 83 81 83 82 83 8A data_73 db 'メモリーが解放できません。$'
3B66:036E 81 5B 82 AA 89 F0
3B66:0374 95 FA 82 C5 82 AB
3B66:037A 82 DC 82 B9 82 F1
3B66:0380 81 42 24
3B66:0383 83 76 83 8D 83 4F db 'プログラムが起動できません。(0)$'
3B66:0389 83 89 83 80 82 AA
3B66:038F 8B 4E 93 AE 82 C5
3B66:0395 82 AB 82 DC 82 B9
3B66:039B 82 F1 81 42 28 30
3B66:03A1 29 24
3B66:03A3 4D 55 53 44 52 56 db 'MUSDRV.COM',0
3B66:03A9 2E 43 4F 4D
3B66:03AD 00
3B66:03AE 48 41 52 45 2E 45 db 'HARE.EXE',0
3B66:03B4 58 45
3B66:03B6
3B66:03B7 41 44 56 48 2E 45 db 'ADVH.EXE',0
3B66:03BD 58 45
3B69:03BF 00
3B69:03C0 00 0D 00 00 02 db 00h, 00h, 0Dh, 00h, 00h, 02h
3B69:03C5 20 31 0D 00 00 02 db 20h, 31h, 0Dh, 00h, 00h, 02h
3B69:03CB 20 32 0D 00 00 10 db 20h, 32h, 0Dh, 00h, 00h, 10h
3B69:03D1 20 5C 4D 45 53 5C db ' \MES\HO0000.MES', 0Dh
3B69:03D7 48 4F 30 30 30 30
3B69:03DD 2E 4D 45 53 0D
3B66:03E2 00 00 db 0,0
3B69:03E4 41 3A 5C 4D 55 53 db 'A:\MUS\HO-OPN.M'
3B69:03EA 5C 48 4F 2D 4F 50
3B69:03F0 4E 2E 4D
3B69:03F3 00 db 0

3B66:07A4 1B 5B 32 4A 24 data_96 db 1Bh, '[2J$' ; xref 3B66:0777 1BHはエスケープコード,[2Jで画面をクリアし,カーソルをホームに
3B66:07A9 1B 5B 6D 41 64 76 data_97 db 1Bh, '[mAdvShell for ADVH System ' ; xref 3B66:0781
3B66:07AF 53 68 65 6C 6C 20
3B66:07B5 66 6F 72 20 41 44
3B66:07BB 56 48 20 53 79 73
3B66:07C1 74 65 6D 20
3B66:07C5 20 56 65 72 2E 31 db ' Ver.1.01', 0Dh, 0Ah, 'Copyright'
3B66:07CB 2E 30 31 0D 0A 43
3B66:07D1 6F 70 79 72 69 67
3B66:07D7 68 74
3B66:07D9 28 43 29 20 54 75 db '(C) Tuneup 1988,89.', 0Dh, 'Copy'
3B66:07DF 6E 65 75 70 20 31
3B66:07E5 39 38 38 2C 38 39
3B66:07EB 2E 0D 43 6F 70 79
3B66:07F1 72 69 67 68 74 28 db 'right(C) Fairytale/カクテル・ソフト',
3B66:07F7 43 29 20 46 61 69
3B66:07FD 72 79 74 61 6C 65
3B66:0803 2F B6 B8 C3 D9 A5
3B66:0809 BF CC C4
3B66:080C 20 31 39 38 38 2C db ' 1988,89.', 0Dh, 0Ah, 0Dh, 0Ah, 0Dh,0Ah
3B66:0812 38 39 2E 0D 0A 0D
3B66:0818 0A 0D 0A
3B66:081B 81 40 90 B0 82 EA db ' 晴れのちおおさわぎ', 0Dh, 0Ah
3B66:0821 82 CC 82 BF 82 A8
3B66:0827 82 A8 82 B3 82 ED
3B66:082D 82 AC 0D 0A
3B66:0831 0D 0A 81 40 81 40 db 0Dh, 0Ah, '  ',
3B66:0837 1B 5B 35 3B 34 33 db 1Bh, '[5;43m [[[ プログラムを読み込み中 ]]] ' ブリンク(点滅・背景黄色)
3B66:083D 6D 81 40 5B 5B 5B ;81 40は全角スペースの文字コード
3B66:0841 20 83 76 83 8D 83
3B66:0847 8D 83 4F 83 89 83
3B66:084D 80 82 F0 93 C7 82
3B66:0853 DD 8D 9E 82 DD 92
3B66:0859 86 20 5D 5D 5D 81
3B66:085F 40
3B66:0860 1B 5B 6D 0D 0A 0D db 1Bh,'[m', 0Dh, 0Ah, 0Dh, 0Ah, 0Dh, 0Ah
3B66:0867 0A 0D 0A
3B66:0869 24 db '$'
3B66:086A 83 68 83 89 83 43 db 'ドライブA:から起動しなおしてく'
3B66:0870 83 75 82 60 81 46
3B66:0876 82 A9 82 E7 8B 4E
3B66:087C 93 AE 82 B5 82 C8
3B66:0882 82 A8 82 B5 82 C4
3B66:0888 82 AD
3B66:088A 82 BE 82 B3 82 A2 db 'ださい。'
3B66:0890 81 42
3B66:0892 07 db 7
3B66:0893 0D 0A 24 db 0Dh, 0Ah, '$'
3B66:0896 83 68 83 89 83 43 data_100 db 'ドライブA:のディスクを確認して' ; xref 3B66:072C
3B66:089C 83 75 82 60 81 46
3B66:08A2 82 CC 83 66 83 42
3B66:08A8 83 58 83 4E 82 F0
3B66:08AE 8A 6D 94 46 82 B5
3B66:08B4 82 C4
3B66:08B6 82 AD 82 BE 82 B3 db 'ください。', 7, '$'
3B66:08BC 82 A2 81 42 07 24
3B66:08C2 0D 81 40 81 40 81 data_103 db 0Dh, '              ' ; xref 3B66:073E
3B66:08C8 40 81 40 81 40 81
3B66:08CE 40 81 40 81 40 81
3B66:08D4 40 81 40 81 40 81
3B66:08DA 40 81 40 81 40
3B66:08DF 81 40 81 40 81 40 db '       ', 0Dh, '$'
3B66:08E5 81 40 81 40 81 40
3B66:08EB 81 40 0D 24
3B66:08EF 90 db 90h
3B66:08F0 CA DA C9 C1 B5 B5 data_104 db 'ハレノチオオサワギA)' ; xref 3B66:070F
3B66:08F6 BB DC B7 DE 41 29
3B66:08FC 00 00 00 00 db 00h, 00h, 00h, 00h

seg_a ends



end start


ほんとはその3でも収まりきらなかったので,半角エラーメッセージデータなどを一部省略しました。

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

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

麻雀幻想曲II('93/08/06・アクティブ)

2012-07-08 17:50:41 | PC98ソフト 麻雀・花札
PC98用ゲーム。FD4枚組。回想モードあり。

シリーズ第1作「麻雀幻想曲」の記事はこちら
シリーズ第3作「麻雀幻想曲3」の記事はこちら

実はPC-98版でなく,Windows95版で入手していたので,パッケージ画像はありませんm(_ _)m
まあこんな感じではありますが。


リング・ドラングファーは,前作のラストで自分をかばって死んだラズベリーの亡骸を故郷のエルフの村に返すため,タニア姫と別れて旅立った。



しかし,今にも降って来そうな無数の星たちが瞬く夜,焚き火の前でうたた寝をしていたリングが,何者かの気配を感じて目を覚ますと,2人の女魔導士がラスベリーの亡骸を連れ去ろうとしていた。2人はリングの体の動きを封じると,易々とラズベリーを連れ去ってしまった。



ラズベリーを犠牲にし,そのうえその亡骸まで奪われてしまったリングは酒に溺れる日々を送っていた。
酒場からの帰途,今にも降って来そうな無数の星たちの瞬きを目にしたリングの前に,ラズベリーを連れ去った2人の魔導士がその姿を現した。2人は,ラズベリーはエルフの村の神殿に安置されている,それどころかラズベリーが生き返るかもしれないと言うのだ。2人は詳しい話をリングの山小屋でするという。

リングが山小屋に戻ると,2人の魔導士はラズベリーと三つ子の長女ブルーベリーと末っ子ストロベリーだと名乗る。2人はエルフの村の長,クレイボーンの命により,リングの力を借りてラズベリーを生き返らせるために,リングを村の神殿への同行を求めに来たのだ。





ブルーベリー,ストロベリーが開いた結界から神殿に赴いたリングに対し,クレイボーンは,世界中に散らばって存在する7つの魔法力が封じられている黄金の麻雀牌,黄金牌の力を1つに併せることで,ラズベリーをこの世に蘇らせることができると告げる。そして,リングに7つの黄金牌を集めることを頼む。この黄金牌にはそれぞれに守護者がついており,その者たちと勝負して勝たなければ,牌を手に入れることはできない。しかも,黄金牌にはそれぞれに秘められた力があり,守護者はこの力を使って麻雀をするため,容易なことでは守護者との勝負に勝つことはできない。そこで,麻雀修行を積んだリングの力が必要とされたのだ。



クレイボーンは,7つの黄金牌のうち,2つの所在を知っていると言う。
その1つ,東の黄金牌の守護者はブルーベリーとストロベリーの2人だ。リングが,ブルーベリー,ストロベリーとの対戦にすら勝てないのであれば,7つの黄金牌を揃えるなどどだい無理な話だ。

リングはブルーベリー,ストロベリーを退けて,「東」の黄金牌を手に入れた(都合により,画像を一部昭和風に加工しています)。


クレイボーンから,2つ目の黄金牌の守護者である魔法使いロマーヌがアルナ村に住んでいることを告げられたリングはアルナ村に向かう。



リングはロマーヌと戦い,これを退けると,「南」の黄金牌を手に入れた。



ロマーヌは,他の黄金牌の守護者を知らなかったが,ストランドで占い師として暮らす,自分の師匠である魔導士シェラザードなら何か知っているかもしれないと教える。
ストランドのシェラザードを訪ねたリングだったが,留守番のルチカからシェラザードがサルレア温泉に療養に行っていることを聞かされる。



ストランドを訪れたリングだったが,シェラザードは今朝ストランドに帰ったところだという。
あわててストランドに戻ったリングに女が声をかける。
声をかけてきたのはかつてリングの命をねらったこともあるブレンヒルドだった。気軽に話しかけてきたブレンヒルドだったが,黄金牌のことを訪ねると気分を害してしまったようだ。



街で会ったルチカは,ストランドから帰ってきたシェラザードが,旧知の友人に会いに行くと告げてすぐに出かけてしまったことを聞かされる。



リングは,シェラザードの友人として知る唯一の人,ロマーヌの下を訪ねると,ロマーヌはもちろん,クレイボーン,そして探していたシェラザードの3人が揃っていた。クレイボーン小さくね?
シェラザードも他の黄金牌の守護者を知らなかったが,占いによると隣の大陸の港町に何か大きな手がかりがあると出たことを告げる。



隣の大陸に向かう船の出るカムール港に向かったリングだったが,渡航船の船長の娘が奇病にかかってしまい,船長が1週間以上飲まず食わずで看病に努めているために,大陸に渡る船は出ないという。
リンクは船長の家を訪れたものの,奇病の治療方法などリングに分かるはずもなかった。
治療法を調べるため,各地を巡回していたリングは,ストランドでブレンヒルドに再会する。
ブレンヒルドは,自分が黄金牌の守護者の1人であることをリングに告げると,リングが勝てば黄金牌を譲るが,リングが負ければ一生自分の言いなりとなることを条件としての勝負を挑んでくる。



リングは,ブレンヒルドを退け,「西」の黄金牌を手に入れた(都合により,画像を一部昭和風に加工しています)。


3つの黄金牌を手に入れたリングは,ブレンヒルドを伴ってロマーヌの下を訪ねる。
ロマーヌによると,船長の娘がかかっている病気は魔夢想黒死病という厄介な病気らしい。
その治療に必要な薬を調合するための材料のサルレア石はロマーヌも持っていないのだが,かつてはサルレア温泉で数十年前まで取れたが今はまったく取れないらしい。

サルレア温泉のバーのマスターにサルレア石を持っている人を尋ねたところ,何とマスターがサルレア石を持っているという。ギャンブル好きなマスターはリングの連れの女性(ブレンヒルド)を賭けて勝負しようという。
サルレア石をどうしても手に入れたいリングは,ブレンヒルドを賭けて,マスターに代わって麻雀を打つシルクと戦い,これを退ける(都合により,画像を一部昭和風に加工しています)。



サルレア石をロマーヌの下に届けて完成した薬を入手したリングは,カムール港の船長宅を訪れ,娘に薬を飲ませると,みるみるうちに娘の血色がよくなった。


船長は命の恩人となったリングの頼みを聞き入れ,隣の大陸に向けて船を出す。
大陸の玄関口サイナスに着いたリングは,町長の娘が黄金色の麻雀牌をネックレスに付けていたことを聞いて,町長の家を訪れる。
町長の娘シーリスは,町の近くの洞窟に住みついた女盗賊を退治してくれたら黄金牌を譲ってもよいと言う。


洞窟の女盗賊ユーイと対決したリングは勝利を収め,「白」,「発」,「中」の黄金牌を手に入れる。



ユーイを改心させたこととその身の上を伝えると,シーリスは素直に黄金牌を渡そうとするが,突然,その態度が豹変した。
どうやら「北」の黄金牌の守護者と名乗る者がシーリスの体を乗っ取ったようだ。



リングが麻雀で「北」の黄金牌の守護者を倒すと,シーリスは正気を取り戻した。



ついに,リングは7つの黄金牌を手に入れた。
エルフの村に帰るため,カムール港に着いたリングたちだったが,ブレンヒルドはここで別れると言い出す。リングとともにエルフの村に向かえば,7つの黄金牌で蘇るラズベリーとの再会を喜ぶリングを見ることになる。そのときに自分が冷静でいられないことを知っているブレンヒルドが,リングと旅を続けられるのはここまでだったのだ。



エルフの村に向かうと,家という家が壊され,木も倒され,何か強大な力で村中が破壊されており,クレイボーンも額から血を流して倒れていた。
7つの黄金牌が揃ったことによりベラドンナを上回る力を持つ魔女グランジェの封印が解け,ブルーベリーとストロベリーをさらい,7つの黄金牌まで奪いに来たのだ。グランジェの圧倒的な力の前に,リングは赤子の手をひねるように黄金牌を奪い去られる。



気を失ったリングは,ブレンヒルドによってロマーヌの下に運ばれ,治療を受けていた。



7つの黄金牌を奪われたリングがグランジェと戦うためには,ノースクレーム山の山頂に住む,シェラザードの師匠,最強の魔法使いである魔導師アミシュによる修行が必要だと告げられ,リングはアミシュの下へ向かう。



アミシュの下での修行により,リングは黄金牌なしに黄金牌に封じられた魔力を使えるようになった。
アミシュは,グランジェが復活したばかりで魔力が十分に復活しておらず,手に入れた黄金牌の力を完全に引き出せないうちならリングに勝機があると告げ,リングをグランジェの根城の結界内に転送する。

グランジェ直属の魔導士エトランジェがリングの前に立ちふさがるが,アミシュの下で修行を積んだリングの敵ではなかった。


グランジェの野望が邪神復活にあることを告げるエトランジェを塵と化したグランジェに挑むリングだったが,エトランジェの力は強大で,リングは倒された。



万事休したかと思われたその瞬間,ブレンヒルド,ロマーヌ,アミシュにクレイボーンが駆け付けた。



アミシュが特別に調合した薬で立ち上がったリングは,グランジェの魔力を封じるアミシュたちの協力を得て,再びグランジェに挑み,勝利を収めた(都合により,画像を一部昭和風に加工しています)。



エルフの村に戻ったリングたちは,ラズベリー復活の儀式を行う。
ブルーベリー,ストロベリーによる呪文の詠唱を終えると,ラズベリーは目を覚ました。



リングと仲間たちは,ラズベリーの復活を涙と喜び混じりの声で祝うのだった。



スタッフ
エグゼクティブ・プロデューサ みっちゃん
プロデューサ         ぽち屋
グラフィック制作総指揮    Boa_UP
ストーリーモード原案     STARLESS
ストーリーモード原画     聖少女
ストーリーモードプログラム  ぱかりん
対戦ぬぎぬぎ原画       Boa_UP,羽林蔵野,かざかみしゅん,Y.S.
VSコンピュータ原画     みんきい
デジタイズ          みんきぃ,Boa_UP,聖少女
画面デザイン         ぽち屋
音楽             よなたん,Yasutoshi.
プログラム          あんぽん
プロダクティブ・マネージャー TakaTan.
制作補助/文字校正      ゆまっち
音源ドライバ         M.KAJIHARA(KAJA)

Copyright(C) 1993 アクティブ・ソフトウェア

前作と異なり,相手をハコテンにしなくても勝負が付くシステムとなったおかげでプレイ時間がずいぶん節約できるようになったばかりか,全画面2枚+2画面スクロール1枚の脱衣画像を楽しめるという大変よい仕様となった本作。
まあストーリーはあってなきがごとしなのは当然なんだけど,それなりに盛り上がる内容で好印象。
ストーリー中に出てきた画像を再鑑賞できるおまけモードの画像表示順がストーリーと一致しないのはかなり萎える。
子供のころから将来を誓い合ったタニア姫は一コマも出てこないあたり,リング,タニア,ラズベリーの三角関係の決着は見えたも同然ですな。

ちなみに,このゲームのメーカーである株式会社アクティブのホームページアドレスであるアクティブソフトウェアはサーバーが見つからない状態になっている(2012/07/08現在)。
なお,ソフトウェアの通信販売ページであるアクティブソフトウェア通信販売は表示可能で,本作を含む麻雀幻想曲I・II・IIIスリム版の販売が続行されているように読めるが(2012/07/08現在),ほんとにまだ販売中かどうかは不明。

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

PC-9821Cx13はえらい奴

2012-07-06 20:14:45 | レトロパソコンのお作法
えらいというのはGreatの意味で使っています。

昔,2ちゃんねるのどっかで,PC-9821にDVD-Multiドライブを積んで使っていることを告白しましたが,まったく反応ありませんでした。
嘘つきとか釣りとか言われるならいいんですが,完全スルーでした。ちょっと悲しかったです。
でも,ここで書いたら信じてもらえそうなので書き残しておきます。

手順
1 DVD-Multiドライブ(内蔵型)を買ってくる。
2 内蔵CDドライブと入れ替える。
3 Windows95をWindows98にアップグレードする。
4 DVDドライブ用のドライバをインストールする。
5 Windows95にダウングレードする。
6 DVDドライブ用ドライバは削除されておらず,書き込みドライブとしては使える。

下のように,リムーバブルディスクとして表示されています。


こちらはデバイスマネージャ画面。


 ただ,自分の場合,書き込み用にDVD-RAMを使っているだけなので,ほんとは+R,-RWが使えるかどうかは不明DVDドライブ実機を確認したところ,DVD-R,RAM対応となっているので,+R,-RWは使える可能性がありません。
 また,DVD-RはWindows95対応の書き込みソフトがないから無理でしょう。

あと記憶があやふやなところ
1 DVDドライブ用ドライバを入れただけではなく,DVD Movie Album SEというソフトも入れたかも。
2 Windows98からのダウングレードなんて簡単にできたっけ?
  エー・アイ・ソフトが出してた,ダウングレードを可能にするソフトを用いてWindows98を入れてたかも。

Windows98を入れたのは,Windows95のままではDVDドライブのドライバ自体,入れてもらえなかったから。
Windows95のままだとCD-ROMドライブとしては使えました。Windows95で使えるCD-R焼きソフトは持ってますが,今さら等倍速焼きとかしても仕方ないのでCD-Rを焼けるかどうかは試してません。
Windows98からダウングレードしたのは,そのままにする必要性がなかったから。
そんなわけで,Windows98の入るPC-98なら,DVDドライブはそのまま使えるのかもしれません。
うちの子はWindows95プレインストールマシンだったので,特に不都合なくWindows98を入れられました。

とまあ,誰にも信じてもらえませんでしたが,今でもこの改造のおかげで,98実機で作成したイメージファイルを最新マシン上に持ってくるメディアとして,DVD-RAMが使えているという実益はあるので,この情報が誰の役に立たなくてもまあいいんですけどね。

なお,この改造をすると,4連装ドライブの顔隠し(ベゼルってやつ?)が使えないため,うちの98Canbeくんは,DVD-RAMドライブ部分だけマスクなしで窪んだところから顔を出してしまいます。


同じPC-9821Cx13シリーズでも,非連装式ドライブ内蔵のやつなら,きれいな顔で収まるかもしれません。

やったらたまたまそうなったというだけの,改造報告でした。ちょっと前までは検索したら,Canbe自慢のユーザーさんホームページとかいっぱいあったのに,今はほとんどなくなっちゃいましたね・・・。

ちなみにうちの子は,メモリは上限まで増設し,CPUも対応機種に載っていなかったけれどいちかばちかでAMD K6-2 400MHz搭載オーバードライブプロセッサ(いわゆる下駄)に載せ替えてみたら見事に動いたという,Cx13界のエリートなのでした。




オーバードライブプロセッサ導入後に,日本橋のソフマップで,Cx13のさらなるエリート化を目指して周辺機器を見てたら,店員に機種を聞かれたのでCanbeですと答えたら,鼻で笑って離れて行かれたことがありました。
Canbeにだって色々あるのに不勉強な奴だと思うけれども,時代遅れの機体に金をかける馬鹿者に見えたのかもしれません。
時代遅れもここまで来るとそれなりに存在意義があるようには思いますが。

そんなわけで,こんな話も生きているうちに書いておかないとロストテクノロジーとなってしまうので,書いてみました。
年寄りの昔話は長くていけませんな。

ではまた。

麻雀幻想曲('92/06/06・アクティブ)

2012-07-04 18:00:00 | PC98ソフト 麻雀・花札
PC98用ゲーム。FD4枚組。回想モードあり。局部描写なし。

シリーズ第2作「麻雀幻想曲2」の記事はこちら
シリーズ第3作「麻雀幻想曲3」の記事はこちら

実はPC-98版でなく,Windows95版で入手していたので,パッケージ画像はありませんm(_ _)m
こちらから脱衣麻雀のストーリーモードをご紹介。




魔女ベラドンナの気まぐれにより辺境の小国ドラングファー公国が滅ぼされて数年。
ドラングファー公国の王子だったリング・ドラングファーは麻雀の腕を磨きながら諸国を旅していた。



彼は,子供のころに将来を誓い合った隣国ロザリアの公女タニアとの結婚の約束を果たすべく,ロザリアに向かっていた。
タニアは,まだ自分のことを思ってくれているだろうか・・・。



リングに遅れること数マイル。リングに戦いを挑んで敗れ,裸で気を失ったまま放置され,人だかりの中で目覚めたブレンヒルドは,屈辱を晴らし,リングに謝らせるべく,リングの後を追っていた。



一方,城塞都市カバラで,リングは奴隷商人に売られようとしているエルフの少女を救い出した。



リングに服を買い与えられたエルフの少女は,リングをマスター(御主人様)と呼び,マスターに一生ついていくと言い出した。少女の名はラズベリー。



腹ごしらえをしようと酒場「地獄待ち」を訪れた2人の前に,復讐心に燃えるブレンヒルドが現れるとリングに戦いを挑んできた。リングはこれを退ける。



戦いに敗れて素っ裸になったブレンヒルドにマントをかけてやったリングは,命を粗末にしないように告げてブレンヒルドを残して立ち去る。

「リング・ドラングファー・・・・・・」
「私を初めて負かした男・・・・・・」
「・・・・・・・・・・・・・・・・」
「・・・・・・惚れた・・・・・・・・」


ラズベリーの服を買ったために食事代にも事欠くようになったリングは,アリーナで一稼ぎを目論む。

受付嬢


第1回対戦相手 クリームヒルド


第2回対戦相手 ぽち(右腕に止まっているドラゴンパピー) 女の子はメルト


最終戦対戦相手 ク・メイル ネコの血を引くライカンスローパーだ。


優勝したと思ったリングに,ク・メイルは謎めいた言葉を告げる。
「あなたなら,トップに立てるかもしれない・・・・・・・・・」

いぶかしがるリングに,ク・メイルは,ロザリア公国でちゃちでない大会が行われること,リングがそこでも勝てるかもしれないことを告げる。

賞金を受け取って,ようやくラズベリーとともに食事にありついたリングだったが,盗賊ギルドのクルンと名乗る女がまたもや襲いかかる。女はメルトの姉で妹の(というかドラゴンパピーの)敵討ちに来たのだ。



クルンを退け,酒場の2階にラズベリーとともに宿を取ったリングだったが,ラズベリーにタニアのことをどう話すべきか苦悶していた。
その横では眠りに落ちたラズベリーがマスターにぐちゃぐちゃにされることを夢見て寝ながらの1人Hにより果てると,深い眠りに落ちるのだった。



苦悶に悶々が重なりながらも眠ろうとするリングを再びクルンが襲う。


クルンを倒したリングはラズベリーを起こさないように出て行くことを命じた。

ロザリア公国の王宮ティンクパレス最上階では,金髪の少女がリングが早く自分の元を訪れることを願って,祈りを捧げていた。



城塞都市カバラから3日間かけてロザリア公国の大正門に辿り着いたリングたちだったが,リングが賑やかな国内で見たのは,王立アリーナでの優勝者に公女タニアとの婚礼を認め,この国の王位を与えるという内容のポスターだった。



直ちに王立アリーナへの出場手続を取ろうとするリングだったが,ラズベリーはまた一人ぼっちになってしまうことを恐れて,王立アリーナへの出場に反対する。口論の末,出場の意思を変えないリングの下からラズベリーは走り去ってしまう。

ラスベリーを追うこともできず,急いで参加エントリーをすませたリングは,予選として,審判員の1人と対戦する。審判員に勝てば予選通過となるのだ。
審判員エルナを倒し,リングは試合出場権を得る。



キューンヒルデを対戦相手とするバトルフィールドに立ったリングの目に,観覧席上段からこちらを見ている人物の姿が映った。
リングはタニアにこの試合に勝って,タニアを正式にもらいうける!と宣言する。



一方,面白くないのは対戦相手のキューンヒルデである。
キューンヒルデは,不潔な男には興味がなく,アリーナで優勝してタニアを奴隷にし,自分が王となって世界を我がものにするという。


キューンヒルデを倒したリングは,最後の対戦相手ワルキューレとの対戦に臨む。
だが,ワルキューレと名乗っていたのは,あのブレンヒルドだった。
リングを愛してしまったブレンヒルドは,公女との結婚を力づく(ママ)で阻止すべくこのアリーナに出場したのだ。
「私は・・・・・・あなたの心が欲しい。」


ワルキューレを倒し,晴れてタニアと結ばれることとなったリングだったが,その祖国を奪った魔女ベラドンナが魔王復活のためのいけにえとして,タニアを連れ去ってしまう。



魔女の行き先などわかるはずもなく,肩を落とすリングの下に戻ってきたラズベリーは,自分には精霊達によってベラドンナの行方が手に取るように分かるという。ラズベリーは,リングに,マスターはマスターの生きたいように生きてくれるよう,自分は森に帰ることを告げて,タニア奪還への協力を約束する。



その夜,ベラドンナのいる古城にたどり着いたリングたちの前にダークエルフが立ちはだかるので,これを倒して先に進む。



ベラドンナの祭壇へ辿り着いたリングたちは生け贄として捧げられたタニアを見つける。
タニアに向かって駆け出したリングを狙ってベラドンナは魔法の矢を放つ。
「危ないっ,マスター!」



魔法の矢はリングをかばったラズベリーの体を貫いた。
怒りに燃えてベラドンナを倒すことを誓うリングをベラドンナは嘲笑う。



リングはベラドンナを倒した。
しかし,リングをかばったラズベリーの傷は深く,短かった主従関係への礼を告げ,リングとタニアの幸せを祈ったエルフの少女は,別れの言葉を残してリングの腕の中で静かに息を引き取った。
「さようなら,・・・・・・・・・リ・ン・グ・・・・・・・・・・・・・・・・・・・・・・」
リングは,しだいに冷たくなっていくラズペリーの体をいつまでも抱きしめ続けた・・・・・・。


ラズベリーを森に返すため,リングは再びタニアに別れを告げる。絶対に帰ってくることを約束して。



「さぁ,帰ろう。・・・ラズベリー・・・・・・・・・・」
「お前の生まれ育った森へ・・・・・・・・」





原画   : 聖少女 KAZAKAMI-SHUN
       みんきぃ Boa_UP
シナリオ : 聖少女
音楽   : よなたん Yasutoshi.
デジタイズ: みんきぃ Boa_UP 聖少女 TakaTan
プログラム: あんぽん ぽち屋
協力   : みっちゃん STARLESS
麻雀幻想曲 1992-96(C)アクティブ・ソフトウェア

スタッフリストは,Windows95版なのでPC-98版とは少し違うかもしれないのでご注意ください。

後に制作された麻雀幻想曲3からは想像も付かないくらい笑いどころのない脱衣麻雀。
麻雀に勝利すると全画面の脱衣画像が1枚見られる。とってもおとなしめな画像で,現在の感覚ではこれを18禁扱いで売ったらかえって訴えられそうなレベル。

どんなショボい手でもいいからとにかく3勝すれば許されるルールの脱衣麻雀ではなく,相手の持ち点を0点にしない限り勝てないルールのため,1対戦にかかる時間が結構バカにならない。しかも,ショボい手ですらそんなには上がれない。
そんなわけで,ストーリーが一本道なのは別にかまわないけど,プレイに長時間を要する点から,あまりおすすめできないゲーム。
しかも,エロ目的でこれをやるとかなり辛いこと請け合い。

聖少女氏がこんな絵を描いていたとは!という驚きはあるだろうけどね。

ちなみに,このゲームのメーカーである株式会社アクティブのホームページアドレスであるアクティブソフトウェアはサーバーが見つからない状態になっている(2012/07/04現在)。
なお,ソフトウェアの通信販売ページであるアクティブソフトウェア通信販売は表示可能で,本作を含む麻雀幻想曲I・II・IIIスリム版の販売が続行されているように読めるが(2012/05/07現在),ほんとにまだ販売中かどうかは不明。

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

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

2012-07-03 12:14:43 | レトロパソコンのお作法
晴れのちおおさわぎ!(PC-98,カクテル・ソフト)ADVSHELL.COM解析(その1)からの続き。
最初の1行だけ重複してます。

3B66:074C E8 0001 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,0564h ;
3B66:0757 B0 C0 mov al,0C0h
3B66:0759 B9 0004 mov cx,4

3B66:075C locloop_27: ; xref 3B66:0762
3B66:075C 26: 08 07 or es:[bx],al
3B66:075F 83 C3 08 add bx,8
3B66:0762 E2 F8 loop locloop_27 ; Loop if cx > 0

3B66:0764 B4 0D mov ah,0Dh
3B66:0766 CD 21 int 21h ; DOS Services ah=function 0Dh
; flush disk buffers to disk
3B66:0768 C3 retn
sub_13 endp

3B66:074F C3 retn ;==================================================================
sub_12 endp


3B66:0793 E8 FEF4 call sub_10 ; (068A)

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

3B66:068A sub_10 proc near
3B66:068A 56 push si ; SI退避
3B66:068B 06 push es ; ES退避
3B66:068C 2B F6 sub si,si ; SI=0000H
3B66:068E B8 0002 mov ax,2 ; AX=0002H
3B66:0691 B1 21 mov cl,21h ; CL=21H
3B66:0693 D3 E8 shr ax,cl ; AXを21H回右シフト。AX=0000H,
; Shift w/zeros fill
3B66:0695 A9 0001 test ax,1 ; ZF=0
3B66:0698 74 39 jz 06D3h ; Jump if zero,ZF=1なら06D3Hへ
3B66:069A 46 inc si ; SI=0001H
3B66:069B 1E push ds ; DS退避
3B66:069C 2B C0 sub ax,ax ; AX=0000H
3B66:069E 8E D8 mov ds,ax ; DS=0000H
3B66:06A0 ,BB 0018 mov bx,0018 ; BX=0018H
3B66:06A3 8B 07 mov ax,[bx] ; AX=DS:[0018H],STOPキーの割込ベクタオフセットのメモリ
3B66:06A5 2E: A3 06DC mov cs:[06DCH],ax ; CS:[06DCH]にSTOPキーの割込ベクタオフセットのメモリを代入
3B66:06A9 8B 47 02 mov ax,[bx+2] ; AX=DS:[001AH],STOPキーの割込ベクタセグメントのメモリ
3B66:06AC 2E: A3 06DE mov cs:[06DEH],ax ; CS:[06DEH]に=STOPキーの割込ベクタセグメントのメモリを代入
3B66:06B0 B8 06E0 mov ax,6E0h ; AX=6E0H
3B66:06B3 89 07 mov [bx],ax ; DS:[0018H],STOPキーの割込ベクタオフセットのメモリを6E0Hに書き換え
3B66:06B5 8C 4F 02 mov [bx+2],cs ; DS:[001AH],STOPキーの割込ベクタセグメントのメモリをCS:に書き換え
; [001AH]:[0018H]=本来のSTOPキーの割込ベクタを[06DEH]:[06DCH]にコピーし,
; STOPキーの割込ベクタをCS:[06E0H]にコピーした
3B66:06B8 2B C0 sub ax,ax ; AX=0000H
3B66:06BA BB 00FF mov bx,0FFh ; BX=00FFH
3B66:06BD 0F ;* pop cs ; DS=CS,Dangerous-8088 only
3B66:06BE BE 2EC3 mov si,2EC3h ; SI=2EC3H
3B66:06C1 C4 16 06DC les dx,dword ptr ds:06DCh ; Load seg:offset ptr,word load reg and ES
; DXに[06DCH],ESにDS:,=本来のSTOPキーの割込ベクタのメモリをロード
3B66:06C5 ,BB 0018 mov bx,0018 ; BX=0018H
3B66:06C8 89 17 mov [bx],dx ; [0018H]にDS:[06DCH]を代入
3B66:06CA 8C 47 02 mov [bx+2],es ; [001AH]にDS:を代入 ;★本来のSTOPキーの割込ベクタの内容に戻っただけか?
3B66:06CD 1F pop ds ; DS復帰
3B66:06CE 0B C0 or ax,ax ; Zero ? AX=0000HなのでZF=1
3B66:06D0 74 01 jz 06D3h ; Jump if zero ZF=1なので06D3Hへ
3B66:06D2 46 inc si ; SI=2EC4H
3B66:06D3 loc_23: ; xref 3B66:0698, 06D0
3B66:06D3 8B C6 mov ax,si ; 06D0HからきたときはSI=23C3H=AX
3B66:06D5 A2 0616 mov [0616h],al ; [0616H]=C3H
3B66:06D8 07 pop es ; ES復帰
3B66:06D9 5E pop si ; SI復帰
3B66:06DA C3 retn
sub_10 endp

3B66:0796 0E push cs ;
3B66:0797 07 pop es ; ES=CS
3B66:0798 BB 061E mov bx,61Eh ; BX=061EH
3B66:079B 83 C3 0F add bx,0Fh ; BX=062DH
3B66:079E B1 04 mov cl,4 ; CL=04H
3B66:07A0 D3 EB shr bx,cl ; BXを4H回右シフト。BX=0062H
; Shift w/zeros fill
3B66:07A2 C3 retn
sub_14 endp

3B66:020E B4 4A mov ah,4Ah ; 割り当てられたメモリブロックのサイズ変更。メモリ開放処理。
3B66:0210 CD 21 int 21h ; DOS Services ah=function 4Ah, ES=メモリ領域のセグメントアドレス
; change memory allocation BX==開放したいメモリの大きさ(パラグラフ)
; bx=bytes/16, es=mem segment
3B66:0212 ,BA 0368 mov dx,0368H ; DX=0368H,文字列'メモリーが解放できません。$'
3B66:0215 73 07 jnc 021Eh ; Jump if carry=0, CF=0(エラーなし)なら0021EHへ

3B66:0217 90 nop


ADVSHELL endp
;**********************************************************************************************
;メモリ解放エラー発生時
3B66:0218 sub_1 proc near
3B66:0218 loc_1: ; xref 3B66:0254
3B66:0218 E8 0069 call 0284h ; (0284) エラー文字列表示ルーチンへ

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:0218 ; エラー文字列表示ルーチン
;##########################################################################

3B66:0284 sub_3 proc near
3B66:0284 B4 09 mov ah,9 ; DX=0368Hで飛んできた。文字列 'メモリーが解放できません。$'
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

;メモリ解放成功時 プログラムロード準備ルーチン

3B66:021E loc_3: ; xref 3B66:0215
3B66:021E ,BE 03FA mov si,03FAH ; SI=03FAH
3B66:0221 loc_4: ; xref 3B66:024D, 0256
3B66:0221 ,8A 04 mov al,[si] ; AL=[03FAH],INT 0FEHの割込ベクタセグメントアドレス
3B66:0223 84 C0 test al,al ; (3B66:03FA=01H),AL=00Hでなければ,ZF=0
3B66:0225 75 03 jnz 022Ah ; Jump if not zero, ZF=0なら022AHへ
3B66:0227 loc_5: ; xref 3B66:0227
3B66:0227 EB FE jmp short loc_5 ; (0227)
3B66:0229 90 db 90h
3B66:022A loc_6: ; xref 3B66:0225
3B66:022A 8B 4C 01 mov cx,[si+1]  ; CX=03C0H=[03FBH]
3B66:022D 8B 54 03 mov dx,[si+3] ; DX=03A3H=[03FDH]
3B66:0230 83 C6 05 add si,5 ; SI=03FFH
3B66:0233 FE C8 dec al ; AL=00H
3B66:0235 74 18 jz 024Fh ; Jump if zero

3B66:0237 FE C8 dec al
3B66:0239 74 08 jz 0243h ; Jump if zero
3B66:023B FE C8 dec al
3B66:023D 75 10 jnz 024Fh ; Jump if not zero

3B66:023F B0 02 mov al,2 ; AL=02H
3B66:0241 EB 08 jmp short 024Bh ; (024B)

3B66:0243 loc_7: ; xref 3B66:0239
3B66:0243 2A C0 sub al,al ; AL=00H
3B66:0245 8B D9 mov bx,cx
3B66:0247 CD F1 int 0F1h ; ??INT Non-standard interrupt

3B66:0249 B0 01 mov al,1 ; AL=01H

3B66:024B loc_8: ; xref 3B66:0241
3B66:024B CD F1 int 0F1h ; ??INT Non-standard interrupt
3B66:024D EB D2 jmp short 0221h ; (0221)

3B66:024F loc_9: ; xref 3B66:0235, 023D
3B66:024F 56 push si ; SI退避,SI=03FFH
3B66:0250 E8 0005 call sub_2 ; (0258)

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

3B66:0258 sub_2 proc near ; CX=03C0H,DX=03A3H(='MUSDRV.COM')
3B66:0258 0E push cs
3B66:0259 07 pop es ; CS=ES,パラメータブロックセグメントアドレス
3B66:025A FE 06 03A0 inc byte ptr [03A0h] ; (3B66:03A0=30H='0')インクリメントして31H='1'
3B66:025E ,BB 041E mov bx,041Eh ; BX=041EH,パラメータブロックオフセットアドレス
; パラメータブロックはCS:041EH
3B66:0261 C7 07 0000 mov word ptr [bx],0 ; DS:[041EH]=0000H ;041EH以下のメモリ書き換え
3B66:0265 89 4F 02 mov [bx+2],cx ; DS:[0420H]=CX=03C0H ;041E 00 00
3B66:0268 8C 5F 04 mov [bx+4],ds ; DS:[0422H]=DS ;0420 C0 03 DS DS 5C 00 DS DS
3B66:026B C7 47 06 005C mov word ptr [bx+6],5Ch ; DS:[0424H]=005CH ;0428 6C 00 DS DS
3B66:0270 8C 5F 08 mov [bx+8],ds ; DS:[0426H]=DS
3B66:0273 C7 47 0A 006C mov word ptr [bx+0Ah],6Ch ; DS:[0428H]=006CH
3B66:0278 8C 5F 0C mov [bx+0Ch],ds ; DS:[042AH]=DS
3B66:027B B8 4B00 mov ax,4B00h ; プログラムのロードと実行
; DS:DX==実行可能プログラムファイルのASCIIZパス名の位置,パス名はNULLで終わらなければならない。
; ES:BX=パラメータブロックの位置 (03C0=00 0D) ドライブ番号0H:カレント,リターンキーのキャラクターコード
3B66:027E CD 21 int 21h ; DOS Services ah=function 4Bh
; run progm @ds:dx, parm @es:bx INT 0F0Hのアドレスにロードした?
3B66:0280 BA 0383 mov dx,383h ; 文字列'プログラムが起動できません。(1)$'
3B66:0283 C3 retn
sub_2 endp

3B66:0253 5E pop si ; SI復帰,SI=03FFH
3B66:0254 72 C2 jc 0218h ; Jump if carry Set エラーなければCF=0でスルー,エラーがあればCF=1なので0218Hへ

;**********************************************************************************************
;プログラムロードエラー発生時
3B66:0218 sub_1 proc near
3B66:0218 loc_1: ; xref 3B66:0254
3B66:0218 E8 0069 call 0284h ; (0284) エラー文字列表示ルーチンへ

;##########################################################################
; SUBROUTINE
;
; Called from: 3B66:0218 ; エラー文字列表示ルーチン
;##########################################################################

3B66:0284 sub_3 proc near
3B66:0284 B4 09 mov ah,9 ; DX=0383Hで飛んできた。文字列 'プログラムが起動できません。(0)$'
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:0256 EB C9 jmp short 0221h ; (0221),SI=03FFH

3B66:0221 loc_4: ; xref 3B66:024D, 0256
3B66:0221 ,8A 04 mov al,[si] ; AL=[03FFH]
3B66:0223 84 C0 test al,al ; (3B66:03FF=01H),AL=00Hでなければ,ZF=0
3B66:0225 75 03 jnz 022Ah ; Jump if not zero, ZF=0なら022AHへ
3B66:0227 loc_5: ; xref 3B66:0227
3B66:0227 EB FE jmp short loc_5 ; (0227)
3B66:0229 90 db 90h
3B66:022A loc_6: ; xref 3B66:0225
3B66:022A 8B 4C 01 mov cx,[si+1]  ; CX=03C4H=[0400H]
3B66:022D 8B 54 03 mov dx,[si+3] ; DX=03AEH=[0402H]
3B66:0230 83 C6 05 add si,5 ; SI=0404H
3B66:0233 FE C8 dec al ; AL=00H
3B66:0235 74 18 jz 024Fh ; Jump if zero

(省略)
3B66:024F loc_9: ; xref 3B66:0235, 023D
3B66:024F 56 push si ; SI退避,SI=0404H
3B66:0250 E8 0005 call sub_2 ; (0258)

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

3B66:0258 sub_2 proc near ; CX=03C4H,DX=03AEH(='HARE.EXE')
3B66:0258 0E push cs
3B66:0259 07 pop es ; CS=ES,パラメータブロックセグメントアドレス
3B66:025A FE 06 03A0 inc byte ptr [03A0h] ; (3B66:03A0=31H='1')インクリメントして32H='2'
3B66:025E ,BB 041E mov bx,041Eh ; BX=041EH,パラメータブロックオフセットアドレス
; パラメータブロックはCS:041EH
3B66:0261 C7 07 0000 mov word ptr [bx],0 ; DS:[041EH]=0000H ;041EH以下のメモリ書き換え
3B66:0265 89 4F 02 mov [bx+2],cx ; DS:[0420H]=CX=03C4H ;041E 00 00
3B66:0268 8C 5F 04 mov [bx+4],ds ; DS:[0422H]=DS ;0420 C4 03 DS DS 5C 00 DS DS
3B66:026B C7 47 06 005C mov word ptr [bx+6],5Ch ; DS:[0424H]=005CH,第1FCB ;0428 6C 00 DS DS
3B66:0270 8C 5F 08 mov [bx+8],ds ; DS:[0426H]=DS
3B66:0273 C7 47 0A 006C mov word ptr [bx+0Ah],6Ch ; DS:[0428H]=006CH,第2FCB
3B66:0278 8C 5F 0C mov [bx+0Ch],ds ; DS:[042AH]=DS
3B66:027B B8 4B00 mov ax,4B00h ; プログラムのロードと実行
; DS:DX=パス名の位置,ES:BX=パラメータブロックの位置(03C4=02 20 31 0D)
;ドライブ番号2=B:半角スペース'1'リターンキー
3B66:027E CD 21 int 21h ; DOS Services ah=function 4Bh
; run progm @ds:dx, parm @es:bx INT 0F1Hのアドレスにロードした?
3B66:0280 BA 0383 mov dx,383h ; 文字列'プログラムが起動できません。(2)$'
3B66:0283 C3 retn
sub_2 endp

3B66:0253 5E pop si ; SI復帰,SI=0404H
3B66:0254 72 C2 jc 0218h ; Jump if carry Set エラーなければCF=0でスルー,エラーがあればCF=1なので0218Hへ
3B66:0256 EB C9 jmp short 0221h ; (0221)

3B66:0221 loc_4: ; xref 3B66:024D, 0256
3B66:0221 ,8A 04 mov al,[si] ; AL=[0404H]=02H
3B66:0223 84 C0 test al,al ; (3B66:0404=02H),AL=00Hでなければ,ZF=0
3B66:0225 75 03 jnz 022Ah ; Jump if not zero, ZF=0なら022AHへ
3B66:0227 loc_5: ; xref 3B66:0227
3B66:0227 EB FE jmp short loc_5 ; (0227)
3B66:0229 90 db 90h
3B66:022A loc_6: ; xref 3B66:0225
3B66:022A 8B 4C 01 mov cx,[si+1]  ; CX=03EAH=[0405H]
3B66:022D 8B 54 03 mov dx,[si+3] ; DX=0000H=[0407H]
3B66:0230 83 C6 05 add si,5 ; SI=0409H
3B66:0233 FE C8 dec al ; AL=01H
3B66:0235 74 18 jz 024Fh ; Jump if zero 0じゃないのでスルー
3B66:0237 FE C8 dec al ; AL=00H
3B66:0239 74 08 jz 0243h ; Jump if zero 0なので0243Hへ

(省略)
3B66:0243 loc_7: ; xref 3B66:0239
3B66:0243 2A C0 sub al,al ; AL=00H
3B66:0245 8B D9 mov bx,cx ; BX=03EAH(03EA=42 3A 5C 4D 55 53 5C 48 4F 2D 4F 50 4E 2E 4D 00)
;'B:\MUS\HO-OPN.M'
3B66:0247 CD F1 int 0F1h ; INT 0F1H ;HARE.EXEを実行

3B66:0249 B0 01 mov al,1 ; AL=01H

3B66:024B loc_8: ; xref 3B66:0241
3B66:024B CD F1 int 0F1h ; INT 0F1H ;AL=01Hで再びHARE.EXEを実行か?
3B66:024D EB D2 jmp short 0221h ; (0221)

3B66:0221 loc_4: ; xref 3B66:024D, 0256
3B66:0221 ,8A 04 mov al,[si] ; AL=[0409H]=01H
3B66:0223 84 C0 test al,al ; (3B66:0409=01H),AL=00Hでなければ,ZF=0
3B66:0225 75 03 jnz 022Ah ; Jump if not zero, ZF=0なら022AHへ
3B66:0227 loc_5: ; xref 3B66:0227
3B66:0227 EB FE jmp short loc_5 ; (0227)
3B66:0229 90 db 90h
3B66:022A loc_6: ; xref 3B66:0225
3B66:022A 8B 4C 01 mov cx,[si+1]  ; CX=03CAH=[040AH]
3B66:022D 8B 54 03 mov dx,[si+3] ; DX=03AEH=[040CH]
3B66:0230 83 C6 05 add si,5 ; SI=040EH
3B66:0233 FE C8 dec al ; AL=00H
3B66:0235 74 18 jz 024Fh ; Jump if zero 0なので024FHへ

(省略)
3B66:024F loc_9: ; xref 3B66:0235, 023D
3B66:024F 56 push si ; SI退避,SI=040EH
3B66:0250 E8 0005 call sub_2 ; (0258)

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

3B66:0258 sub_2 proc near ; CX=03CAH,DX=03AEH(='HARE.EXE')
3B66:0258 0E push cs
3B66:0259 07 pop es ; CS=ES,パラメータブロックセグメントアドレス
3B66:025A FE 06 03A0 inc byte ptr [03A0h] ; (3B66:03A0=32H='2')インクリメントして33H='3'
3B66:025E ,BB 041E mov bx,041Eh ; BX=041EH,パラメータブロックオフセットアドレス
; パラメータブロックはCS:041EH
3B66:0261 C7 07 0000 mov word ptr [bx],0 ; DS:[041EH]=0000H ;041EH以下のメモリ書き換え
3B66:0265 89 4F 02 mov [bx+2],cx ; DS:[0420H]=CX=03CAH ;041E 00 00
3B66:0268 8C 5F 04 mov [bx+4],ds ; DS:[0422H]=DS ;0420 CA 03 DS DS 5C 00 DS DS
3B66:026B C7 47 06 005C mov word ptr [bx+6],5Ch ; DS:[0424H]=005CH ;0428 6C 00 DS DS
3B66:0270 8C 5F 08 mov [bx+8],ds ; DS:[0426H]=DS
3B66:0273 C7 47 0A 006C mov word ptr [bx+0Ah],6Ch ; DS:[0428H]=006CH
3B66:0278 8C 5F 0C mov [bx+0Ch],ds ; DS:[042AH]=DS
3B66:027B B8 4B00 mov ax,4B00h ; プログラムのロードと実行
; DS:DX=パス名の位置,ES:BX=パラメータブロックの位置(03CA=02 20 32 0D)
3B66:027E CD 21 int 21h ; DOS Services ah=function 4Bh =B:半角スペース'2'リターンキー
; run progm @ds:dx, parm @es:bx INT 0F2Hのアドレスにロードした?
3B66:0280 BA 0383 mov dx,383h ; 文字列'プログラムが起動できません。(3)$'
3B66:0283 C3 retn
sub_2 endp

3B66:0253 5E pop si ; SI復帰,SI=040EH
3B66:0254 72 C2 jc 0218h ; Jump if carry Set エラーなければCF=0でスルー,エラーがあればCF=1なので0218Hへ
3B66:0256 EB C9 jmp short 0221h ; (0221)

3B66:0221 loc_4: ; xref 3B66:024D, 0256
3B66:0221 ,8A 04 mov al,[si] ; AL=[040EH]=03H
3B66:0223 84 C0 test al,al ; (3B66:0404=03H),AL=00Hでなければ,ZF=0
3B66:0225 75 03 jnz 022Ah ; Jump if not zero, ZF=0なら022AHへ
3B66:0227 loc_5: ; xref 3B66:0227
3B66:0227 EB FE jmp short loc_5 ; (0227)
3B66:0229 90 db 90h
3B66:022A loc_6: ; xref 3B66:0225
3B66:022A 8B 4C 01 mov cx,[si+1]  ; CX=0000H=[040FH]
3B66:022D 8B 54 03 mov dx,[si+3] ; DX=0000H=[0411H]
3B66:0230 83 C6 05 add si,5 ; SI=0413H
3B66:0233 FE C8 dec al ; AL=02H
3B66:0235 74 18 jz 024Fh ; Jump if zero 0じゃないのでスルー
3B66:0237 FE C8 dec al ; AL=01H
3B66:0239 74 08 jz 0243h ; Jump if zero 0じゃないのでスルー
3B66:023B FE C8 dec al ; AL=00H
3B66:023D 75 10 jnz 024Fh ; Jump if not zero 0なのでスルー
3B66:023F B0 02 mov al,2 ; AL=02H
3B66:0241 EB 08 jmp short 024Bh ; (024B)

(省略)
3B66:024B loc_8: ; xref 3B66:0241
3B66:024B CD F1 int 0F1h ; AL=02HでHARE.EXE?
3B66:024D EB D2 jmp short 0221h ; (0221)

3B66:0221 loc_4: ; xref 3B66:024D, 0256
3B66:0221 ,8A 04 mov al,[si] ; AL=[0413H]=01H
3B66:0223 84 C0 test al,al ; (3B66:0413=01H),AL=00Hでなければ,ZF=0
3B66:0225 75 03 jnz 022Ah ; Jump if not zero, ZF=0なら022AHへ
3B66:0227 loc_5: ; xref 3B66:0227
3B66:0227 EB FE jmp short loc_5 ; (0227)
3B66:0229 90 db 90h
3B66:022A loc_6: ; xref 3B66:0225
3B66:022A 8B 4C 01 mov cx,[si+1]  ; CX=03D6H=[0414H]
3B66:022D 8B 54 03 mov dx,[si+3] ; DX=03B7H=[0416H]
3B66:0230 83 C6 05 add si,5 ; SI=0418H
3B66:0233 FE C8 dec al ; AL=00H
3B66:0235 74 18 jz 024Fh ; Jump if zero 0なので024FHへ

(省略)
3B66:024F loc_9: ; xref 3B66:0235, 023D
3B66:024F 56 push si ; SI退避,SI=0418H
3B66:0250 E8 0005 call sub_2 ; (0258)

以下,その3に続く。

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

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