Convert all Shift_JIS files to UTF-8

This commit is contained in:
kichikuou
2020-02-24 18:06:38 +09:00
parent 9f09c0c2de
commit 7a1cc2a483
27 changed files with 824 additions and 824 deletions
+57 -57
View File
@@ -1,122 +1,122 @@
2004.07.03
Win9x系のOS上で、16bppのDIBSection生成時に落ちる問題を修正した。
HPC2000版で、簡易にFM音源を再生できるようにした。
Win9x系のOS上で、16bppのDIBSection生成時に落ちる問題を修正した。
HPC2000版で、簡易にFM音源を再生できるようにした。
2004.07.04
HPC2000版において、GAPIを使用するバージョンを作成しました。
こちらは完全にsigmarion3専用です。
HPC2000版において、GAPIを使用するバージョンを作成しました。
こちらは完全にsigmarion3専用です。
2004.07.05
セーブデータの、オリジナルとの非互換部分を修正しました。
(テキストウィンドウの枠の有無の記録部分がずれていた)
セーブデータの、オリジナルとの非互換部分を修正しました。
(テキストウィンドウの枠の有無の記録部分がずれていた)
セーブ速度の向上を図りました。(HPC2000版で効果絶大)
セーブ速度の向上を図りました。(HPC2000版で効果絶大)
HPC2000版で、Only Youのオープニング速度調整部の結果に補正を掛ける
ようにしました。(sigmarion3, 533MHz, GAPI使用を基準に、D09=140)
HPC2000版で、Only Youのオープニング速度調整部の結果に補正を掛ける
ようにしました。(sigmarion3, 533MHz, GAPI使用を基準に、D09=140)
HPC2000版で、FM音源の再生品質を向上させました。
1-3chは正弦波、4-6chは矩形波、7-9chは三角波として合成しています。
HPC2000版で、FM音源の再生品質を向上させました。
1-3chは正弦波、4-6chは矩形波、7-9chは三角波として合成しています。
2004.07.09
HPC2000版を廃止して、sigmarion3+GAPI専用としました。
PPC2002版を追加しました。
WINCE版の簡易FM音源を8KHzに変更しました。
HPC2000版を廃止して、sigmarion3+GAPI専用としました。
PPC2002版を追加しました。
WINCE版の簡易FM音源を8KHzに変更しました。
2005.02.08
メッセージスキップ、メッセージウェイトを実装しました。
メッセージスキップ、メッセージウェイトを実装しました。
2005.02.09
動詞-目的語メニューの実装を変更しました。
動詞-目的語メニューの実装を変更しました。
2005.02.19
sig3版のバイナリを更新しました。
コンパイラの最適化の不具合です。
sig3版のバイナリを更新しました。
コンパイラの最適化の不具合です。
2006.09.03
いつの間にか、ゲーム毎の仕様違いを吸収するロジックが機能しなく
なっていたのを修正しました。(プリプロセッサの定義ミス)
例えば夢幻泡影のCGの色化けなどが解決しています。
いつの間にか、ゲーム毎の仕様違いを吸収するロジックが機能しなく
なっていたのを修正しました。(プリプロセッサの定義ミス)
例えば夢幻泡影のCGの色化けなどが解決しています。
Eコマンドの初期領域を(0,0)-(639,399)に変更しました。
あゆみちゃんのオープニングで画面右端にゴミが残る問題が解決しています。
Eコマンドの初期領域を(0,0)-(639,399)に変更しました。
あゆみちゃんのオープニングで画面右端にゴミが残る問題が解決しています。
K1-K3で、マウスカーソルの移動をカーソル入力とする処理を実装しました。
例えば館3のタイトル画面でマウス操作を受け付けるようになっています。
K1-K3で、マウスカーソルの移動をカーソル入力とする処理を実装しました。
例えば館3のタイトル画面でマウス操作を受け付けるようになっています。
2006.09.04
Y27に対応しました。
Y27に対応しました。
2006.09.05
パレット展開の処理を修正しました。
特にアンビヴァレンツ、ファニーBeeは例外的な処理を加えています。
パレット展開の処理を修正しました。
特にアンビヴァレンツ、ファニーBeeは例外的な処理を加えています。
2006.09.06
ファニーBeeの256色PMSが色化けする問題を修正しました。
パレット展開の指定を無視して常に取得するようにしています。
ファニーBeeの256色PMSが色化けする問題を修正しました。
パレット展開の指定を無視して常に取得するようにしています。
2006.09.07
画面領域を退避してウィンドウを開いた後にパレットが更新されて、
退避した領域を復帰したときに色化けする問題の対策を行いました。
フェード中にパレットの内容の異なるCGを同時に表示した場合に
色化けする問題の対策を行いました。
画面領域を退避してウィンドウを開いた後にパレットが更新されて、
退避した領域を復帰したときに色化けする問題の対策を行いました。
フェード中にパレットの内容の異なるCGを同時に表示した場合に
色化けする問題の対策を行いました。
夢幻泡影の色化け問題がこれで解決した筈です。
夢幻泡影の色化け問題がこれで解決した筈です。
2006.09.09
ファニーBeeにおいてテキストの窓枠が消える問題、Pコマンドで
パレットを変更しても画面に反映されない問題の対策を行いました。
ファニーBeeにおいてテキストの窓枠が消える問題、Pコマンドで
パレットを変更しても画面に反映されない問題の対策を行いました。
2006.09.15
9/7の修正で、B4の画面退避、窓退避の処理にエンバグしてしまって
いたのを修正しました。
ぷろすちゅーでんとGのオープニングで文字が重なってしまう問題、
DPS全部でウィンドウが消えない問題が修正されています。
9/7の修正で、B4の画面退避、窓退避の処理にエンバグしてしまって
いたのを修正しました。
ぷろすちゅーでんとGのオープニングで文字が重なってしまう問題、
DPS全部でウィンドウが消えない問題が修正されています。
2007.02.22
フルスクリーンからウィンドウに移行したときに、ウィンドウが一番下に
いってしまう問題を修正しました。
フルスクリーンからウィンドウに移行したときに、ウィンドウが一番下に
いってしまう問題を修正しました。
フェードイン状態で更にフェードインしたときに、画面が消えてしまう
問題の対策を行いました。
乙女戦記で迷宮の画面が消える問題が修正されています。
フェードイン状態で更にフェードインしたときに、画面が消えてしまう
問題の対策を行いました。
乙女戦記で迷宮の画面が消える問題が修正されています。
副作用がなければ、多分これで最終版です。
副作用がなければ、多分これで最終版です。
2007.02.23
おまけで再起動機能を追加しました。
おまけで再起動機能を追加しました。
2016.01.11
フルスクリーン時にメニューを隠すようにしました。
16bppから24bppに変更しました。
Vista以降で文字が化ける問題が解決しているかもしれません。
フルスクリーン時にメニューを隠すようにしました。
16bppから24bppに変更しました。
Vista以降で文字が化ける問題が解決しているかもしれません。
WindowsCE版はもうサポートできないので、ソースから削除しました。
WindowsCE版はもうサポートできないので、ソースから削除しました。
2016.01.13
文字の描画も24bppで処理するようにしました。
Y4の乱数生成をxorhift32にしました。
512命令毎にSleep(10)を入れるようにしました。
文字の描画も24bppで処理するようにしました。
Y4の乱数生成をxorhift32にしました。
512命令毎にSleep(10)を入れるようにしました。
2016.01.15
あゆみちゃん物語 フルカラー実写版をサポートしました。
キーまたはボタンが離されるまで、メニューを表示しないようにしました。
あゆみちゃん物語 フルカラー実写版をサポートしました。
キーまたはボタンが離されるまで、メニューを表示しないようにしました。
+16 -16
View File
@@ -1,26 +1,26 @@
GPL扱いで、適当に。
このアーカイブについては一切サポート外です。
GPL扱いで、適当に。
このアーカイブについては一切サポート外です。
コンパイル環境は以下の通りです。
コンパイル環境は以下の通りです。
Visual C++ 2008 SP1
プロジェクトファイルは以下の通りです。
プロジェクトファイルは以下の通りです。
crescent.vcproj クレセントムーンがぁる
crescent.vcproj クレセントムーンがぁる
dsp.vcproj D.P.S. - Dream Program System
fukei.vcproj 婦警さん物語VX
intruder.vcproj Intruder -桜屋敷の探索-
maria.vcproj Super D.P.S. マリアとカンパン
prog_omake.vcproj prostudent G おまけ
fukei.vcproj 婦警さん物語VX
intruder.vcproj Intruder -桜屋敷の探索-
maria.vcproj Super D.P.S. マリアとカンパン
prog_omake.vcproj prostudent G おまけ
sdps.vcproj Super D.P.S.
system3.vcproj SYSTEM3汎用
tengu.vcproj あぶないてんぐ伝説
system3.vcproj SYSTEM3汎用
tengu.vcproj あぶないてんぐ伝説
vampire.vcproj Little Vampire
実装上では、近間さんのxsystem35を参考にしています。
旧作の実装については、Ryu1さんが移植されたDOS版や、
unitbase内部でsystem35に移植されたものを参考にしています。
実装上では、近間さんのxsystem35を参考にしています。
旧作の実装については、Ryu1さんが移植されたDOS版や、
unitbase内部でsystem35に移植されたものを参考にしています。
alsmidiは、Nastyさん、teruさんの作品です。
REITHUSさんの作成されたMDAデータを内蔵しています。
alsmidiは、Nastyさん、teruさんの作品です。
REITHUSさんの作成されたMDAデータを内蔵しています。
+2 -2
View File
@@ -28,13 +28,13 @@ int FILEIO::StatSavedata(const char* filename, struct stat* buf)
FILEIO::FILEIO()
{
// �‰Šú‰»
// 初期化
fp = NULL;
}
FILEIO::~FILEIO(void)
{
// ŒãŽn––
// 後始末
if(fp != NULL) {
Fclose();
}
+5 -5
View File
@@ -13,7 +13,7 @@
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// 日本語 resources
// 日本語 resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
#ifdef _WIN32
@@ -113,11 +113,11 @@ IDR_T2 MDA DISCARDABLE "AMUS_T2.MDA"
IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 122, 55
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "文字列の入力"
FONT 9, "MS Pゴシック"
CAPTION "文字列の入力"
FONT 9, "MS Pゴシック"
BEGIN
EDITTEXT IDC_EDITBOX,7,15,112,12
LTEXT "文字を入力してください(最大8文字)",IDC_TEXT,7,3,112,8
LTEXT "文字を入力してください(最大8文字)",IDC_TEXT,7,3,112,8
DEFPUSHBUTTON "OK",IDOK,35,36,50,14
END
@@ -138,7 +138,7 @@ BEGIN
END
#endif // APSTUDIO_INVOKED
#endif // 日本語 resources
#endif // 日本語 resources
/////////////////////////////////////////////////////////////////////////////
+30 -30
View File
@@ -39,7 +39,7 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
SDL_RenderSetLogicalSize(sdlRenderer, 640, 400);
sdlTexture = SDL_CreateTexture(sdlRenderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STATIC, 640, 400); // TOOD: pixelformat?
// DIBSection 8bpp * 3 (表, 裏, メニュー)
// DIBSection 8bpp * 3 (表, 裏, メニュー)
for(int i = 0; i < 3; i++) {
hBmpScreen[i] = SDL_CreateRGBSurface(0, 640, 480, 32, 0, 0, 0, 0);
SDL_LockSurface(hBmpScreen[i]);
@@ -47,18 +47,18 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
// TODO: clear surface
// memset(lpBmpScreen[i], 0, 640 * 480 * sizeof(DWORD));
// 仮想VRAMへのポインタ取得
// 仮想VRAMへのポインタ取得
for(int j = 0; j < 480; j++) {
vram[i][j] = surface_line(hBmpScreen[i], j);
}
}
// DIBSection 24bpp * 1 (最終出力先)
// DIBSection 24bpp * 1 (最終出力先)
display_surface = hBmpDest = SDL_CreateRGBSurface(0, 640, 480, 32, 0, 0, 0, 0);
SDL_LockSurface(hBmpDest);
// TODO: clear surface
// フォント
// フォント
TTF_Init();
hFont16 = TTF_OpenFont(fontfile, 16);
hFont24 = TTF_OpenFont(fontfile, 24);
@@ -69,12 +69,12 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
parent->fatal("Cannot open font file %s", fontfile);
}
// カーソル初期化
// カーソル初期化
for(int i = 0; i < 10; i++) {
hCursor[i] = NULL;
}
// GAIJI.DAT読み込み
// GAIJI.DAT読み込み
memset(gaiji, 0, sizeof(gaiji));
FILEIO* fio = new FILEIO();
@@ -105,12 +105,12 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
}
delete fio;
// SYSTEM3 初期化
// SYSTEM3 初期化
// ACG.DAT
strcpy_s(acg, 16, "ACG.DAT");
// パレット
// パレット
memset(program_palette, 0, sizeof(program_palette));
program_palette[0x00] = SETPALETTE16(0x0, 0x0, 0x0);
program_palette[0x01] = SETPALETTE16(0x0, 0x0, 0xa);
@@ -166,9 +166,9 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
memcpy(screen_palette, program_palette, sizeof(program_palette));
// Bコマンド
// Bコマンド
for(int i = 0; i < 10; i++) {
// ウィンドウの初期位置はシステムによって異なる
// ウィンドウの初期位置はシステムによって異なる
switch (nact->crc32) {
case CRC32_BUNKASAI:
SET_TEXT(i, 24, 304, 616, 384, false);
@@ -176,7 +176,7 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
break;
case CRC32_CRESCENT:
SET_TEXT(i, 24, 288, 616, 378, false);
// 本来は横メニュー
// 本来は横メニュー
SET_MENU(i, 464, 50, 623, 240, true);
break;
case CRC32_DPS:
@@ -214,7 +214,7 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
}
// Eコマンド
// Eコマンド
for(int i = 0; i < 20; i++) {
// SET_BOX(i, 0, 0, 0, 631, 399);
SET_BOX(i, 0, 0, 0, 639, 399);
@@ -236,14 +236,14 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
}
}
// 画面選択
// 画面選択
src_screen = dest_screen = 0;
// 画面サイズ
// 画面サイズ
screen_height = 400;
scroll = 400;
// メッセージ表示
// メッセージ表示
text_dest_x = text_w[0].sx;
text_dest_y = text_w[0].sy + 2;
text_space = 2;
@@ -258,7 +258,7 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
text_back_color = 0;
}
// メニュー表示
// メニュー表示
menu_dest_x = 2;
menu_dest_y = 0;
menu_font_size = 16;
@@ -276,7 +276,7 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
draw_hankaku = false;
draw_menu = false;
// CG表示
// CG表示
set_cg_dest = false;
cg_dest_x = cg_dest_y = 0;
for(int i = 0; i < MAX_CG; i++) {
@@ -285,18 +285,18 @@ AGS::AGS(NACT* parent, const char* fontfile) : nact(parent)
get_palette = extract_palette = extract_cg = true;
palette_bank = -1;
// マウスカーソル
// マウスカーソル
cursor_color = 15;
cursor_index = 0;
// フェード状態
// フェード状態
fader = false;
memset(fader_screen, 0, sizeof(fader_screen));
}
AGS::~AGS()
{
// 退避領域の開放
// 退避領域の開放
for(int i = 0; i < 10; i++) {
if(menu_w[i].screen) {
free(menu_w[i].screen);
@@ -312,21 +312,21 @@ AGS::~AGS()
}
}
// カーソル開放
// カーソル開放
for(int i = 0; i < 10; i++) {
if(hCursor[i]) {
SDL_FreeCursor(hCursor[i]);
}
}
// フォント開放
// フォント開放
TTF_CloseFont(hFont16);
TTF_CloseFont(hFont24);
TTF_CloseFont(hFont32);
TTF_CloseFont(hFont48);
TTF_CloseFont(hFont64);
// surface開放
// surface開放
for(int i = 0; i < 3; i++) {
SDL_FreeSurface(hBmpScreen[i]);
}
@@ -369,7 +369,7 @@ void AGS::fade_end()
void AGS::fade_out(int depth, bool white)
{
// 通常画面 → 白黒画面
// 通常画面 → 白黒画面
int fx = fade_x[depth];
int fy = fade_y[depth];
fader = true;
@@ -381,13 +381,13 @@ void AGS::fade_out(int depth, bool white)
}
}
// 画面更新
// 画面更新
invalidate_screen(0, 0, 640, screen_height);
}
void AGS::fade_in(int depth)
{
// 白黒画面 → 通常画面
// 白黒画面 → 通常画面
int fx = fade_x[depth];
int fy = fade_y[depth];
fader = (depth == 15) ? false : true;
@@ -400,7 +400,7 @@ void AGS::fade_in(int depth)
}
}
// 画面更新
// 画面更新
invalidate_screen(0, 0, 640, screen_height);
}
@@ -412,7 +412,7 @@ void AGS::flush_screen(bool update)
uint32* dest = surface_line(hBmpDest, y);
for(int x = 0; x < 640; x++) {
if (nact->sys_ver == 3 && src[x] & 0x80000000) {
// あゆみちゃん物語 フルカラー実写版
// あゆみちゃん物語 フルカラー実写版
dest[x] = src[x] & 0xffffff;
} else {
dest[x] = screen_palette[src[x] & 0xff];
@@ -432,7 +432,7 @@ void AGS::draw_screen(int sx, int sy, int width, int height)
for(int x = sx; x < (sx + width) && x < 640; x++) {
uint32 a=src[x];
if (nact->sys_ver == 3 && src[x] & 0x80000000) {
// あゆみちゃん物語 フルカラー実写版
// あゆみちゃん物語 フルカラー実写版
dest[x] = src[x] & 0xffffff;
} else {
dest[x] = screen_palette[src[x] & 0xff];
@@ -446,7 +446,7 @@ void AGS::draw_screen(int sx, int sy, int width, int height)
for(int x = sx; x < (sx + width) && x < 640; x++) {
uint32 a=src[x];
if (nact->sys_ver == 3 && src[x] & 0x80000000) {
// あゆみちゃん物語 フルカラー実写版
// あゆみちゃん物語 フルカラー実写版
dest[x] = src[x] & 0xffffff;
} else {
dest[x] = screen_palette[src[x] & 0xff];
+16 -16
View File
@@ -12,7 +12,7 @@
#include "nact.h"
#include <SDL_ttf.h>
// フェード処理
// フェード処理
static const int fade_x[16] = {0, 2, 2, 0, 1, 3, 3, 1, 1, 3, 3, 1, 0, 2, 2, 0};
static const int fade_y[16] = {0, 2, 0, 2, 1, 3, 1, 3, 0, 2, 0, 2, 1, 3, 1, 3};
@@ -45,22 +45,22 @@ private:
SDL_Texture* sdlTexture;
// Surface
SDL_Surface* hBmpScreen[3]; // 8bpp * 3 (表, 裏, メニュー)
SDL_Surface* hBmpDest; // DIBSection 24bpp (最終出力先)
SDL_Surface* hBmpScreen[3]; // 8bpp * 3 (表, 裏, メニュー)
SDL_Surface* hBmpDest; // DIBSection 24bpp (最終出力先)
// フォント
// フォント
TTF_Font* hFont16;
TTF_Font* hFont24;
TTF_Font* hFont32;
TTF_Font* hFont48;
TTF_Font* hFont64;
// カーソル
// カーソル
SDL_Cursor* hCursor[10];
// AGS
void load_vsp2l(uint8* data, int page, int transparent); // Little Vampire
void load_gl3(uint8* data, int page, int transparent); // あぶない天狗伝説
void load_gl3(uint8* data, int page, int transparent); // あぶない天狗伝説
void load_gm3(uint8* data, int page, int transparent); // Intruder
void load_vsp(uint8* data, int page, int transparent);
void load_pms(uint8* data, int page, int transparent);
@@ -82,13 +82,13 @@ private:
uint8 palB(uint8 col) { return screen_palette[col] & 0xff; }
int nearest_color(int r, int g, int b);
uint32* vram[3][480]; // 仮想VRAMへのポインタ
uint32* vram[3][480]; // 仮想VRAMへのポインタ
uint32 program_palette[256];
uint32 screen_palette[256];
uint8 gaiji[188][32];
bool fader; // フェードの状態
bool fader; // フェードの状態
uint32 fader_screen[640 * 480];
public:
@@ -136,14 +136,14 @@ public:
// ACG.DAT
char acg[16];
// 画面選択
// 画面選択
int src_screen;
int dest_screen;
int scroll;
int screen_height;
// メッセージ表示
// メッセージ表示
int text_dest_x;
int text_dest_y;
int text_space;
@@ -151,9 +151,9 @@ public:
uint8 text_font_color;
uint8 text_frame_color;
uint8 text_back_color;
int text_font_maxsize; // その行での最大フォントサイズ
int text_font_maxsize; // その行での最大フォントサイズ
// メニュー表示
// メニュー表示
int menu_dest_x;
int menu_dest_y;
int menu_font_size;
@@ -165,7 +165,7 @@ public:
bool draw_hankaku;
bool draw_menu;
// ウィンドウ (Bコマンド)
// ウィンドウ (Bコマンド)
typedef struct {
int sx;
int sy;
@@ -189,7 +189,7 @@ public:
WINDOW menu_w[10];
WINDOW text_w[10];
// ボックス (E, Y7コマンド)
// ボックス (E, Y7コマンド)
typedef struct {
uint8 color;
int sx;
@@ -199,7 +199,7 @@ public:
} BOX;
BOX box[20];
// CG表示
// CG表示
bool set_cg_dest;
int cg_dest_x;
int cg_dest_y;
@@ -209,7 +209,7 @@ public:
bool extract_palette_cg[MAX_CG];
int palette_bank;
// マウスカーソル
// マウスカーソル
uint8 cursor_color;
int cursor_index;
};
+5 -5
View File
@@ -8,10 +8,10 @@
void AGS::load_bmp(const char *file_path)
{
// ヘッダ取得
// ヘッダ取得
int sx = 0, sy = 0;
// Jコマンドの処理
// Jコマンドの処理
if(set_cg_dest) {
sx = cg_dest_x;
sy = cg_dest_y;
@@ -21,7 +21,7 @@ void AGS::load_bmp(const char *file_path)
if(extract_cg) {
assert(false);
#if 0
// BMP読み込み
// BMP読み込み
WCHAR wszFilePath[_MAX_PATH];
MultiByteToWideChar(CP_ACP, 0, file_path, -1, wszFilePath, _MAX_PATH);
Gdiplus::Bitmap *pBitmap = Gdiplus::Bitmap::FromFile(wszFilePath);
@@ -33,12 +33,12 @@ void AGS::load_bmp(const char *file_path)
}
}
// 画面更新
// 画面更新
if(dest_screen == 0) {
draw_screen(sx, sy, pBitmap->GetWidth(), pBitmap->GetHeight());
}
// BMP開放
// BMP開放
delete pBitmap;
#endif
}
+5 -5
View File
@@ -8,7 +8,7 @@
void AGS::load_cursor(int page)
{
// カーソルCGをロードする
// カーソルCGをロードする
bool j_set = set_cg_dest;
int j_x = cg_dest_x;
int j_y = cg_dest_y;
@@ -26,9 +26,9 @@ void AGS::load_cursor(int page)
cg_dest_y = j_y;
dest_screen = dest;
// フォントの生成
// フォントの生成
for(int i = 0; i < 10; i++) {
// パターン読み込み
// パターン読み込み
uint8 pat[34][34];
memset(pat, 0, sizeof(pat));
@@ -38,7 +38,7 @@ void AGS::load_cursor(int page)
}
}
// パターン縁取り
// パターン縁取り
for(int y = 1; y <= 32; y++) {
for(int x = 1; x <= 32; x++) {
if(pat[y][x] == 0 && (pat[y - 1][x] == 1 || pat[y + 1][x] == 1 || pat[y][x - 1] == 1 || pat[y][x + 1] == 1)) {
@@ -47,7 +47,7 @@ void AGS::load_cursor(int page)
}
}
// フォント生成
// フォント生成
uint8 amask[128], xmask[128];
memset(amask, 0, sizeof(amask));
memset(xmask, 0, sizeof(xmask));
+5 -5
View File
@@ -13,7 +13,7 @@ extern char g_root[_MAX_PATH];
void AGS::load_cg(int page, int transparent)
{
if (nact->sys_ver == 3) {
// あゆみちゃん物語 フルカラー実写版
// あゆみちゃん物語 フルカラー実写版
if(strncmp(acg, "CGA000.BMP", 10) == 0) {
char file_path[_MAX_PATH];
sprintf_s(file_path, _MAX_PATH, "%sCGA%03d.BMP", g_root, page);
@@ -38,7 +38,7 @@ void AGS::load_cg(int page, int transparent)
break;
case CRC32_INTRUDER:
// load_gm3(data, page, transparent);
load_vsp(data, page, transparent); // 暫定
load_vsp(data, page, transparent); // 暫定
break;
case CRC32_VAMPIRE:
load_vsp2l(data, page, transparent);
@@ -50,7 +50,7 @@ void AGS::load_cg(int page, int transparent)
break;
case 2:
if(nact->crc32 == CRC32_AYUMI_PROTO) {
// あゆみちゃん物語 PROTO
// あゆみちゃん物語 PROTO
load_gl3(data, page, transparent);
} else if(nact->crc32 == CRC32_SDPS_MARIA || nact->crc32 == CRC32_SDPS_TONO || nact->crc32 == CRC32_SDPS_KAIZOKU) {
// Super D.P.S
@@ -118,7 +118,7 @@ void AGS::copy(int sx, int sy, int ex, int ey, int dx, int dy)
void AGS::gcopy(int gsc, int gde, int glx, int gly, int gsw)
{
// N88-BASIC時代のコピーコマンド
// N88-BASIC時代のコピーコマンド
int src = (gsw == 0 || gsw == 2) ? 0 : 1;
int dest = (gsw == 0 || gsw == 3) ? 0 : 1;
int sx = (gsc % 80) * 8;
@@ -155,7 +155,7 @@ void AGS::paint(int x, int y, uint8 color)
void AGS::draw_box(int index)
{
if(index == 0) {
// 全画面消去
// 全画面消去
box_fill(dest_screen, 0, 0, 639, 479, 0);
return;
}
+8 -8
View File
@@ -8,7 +8,7 @@
void AGS::load_gl3(uint8* data, int page, int transparent)
{
// ヘッダ取得
// ヘッダ取得
uint16 tmp = (data[0x30] | (data[0x31] << 8)) - 0x8000;
int sx = tmp % 80;
int sy = tmp / 80;
@@ -16,19 +16,19 @@ void AGS::load_gl3(uint8* data, int page, int transparent)
int height = data[0x34] | (data[0x35] << 8);
uint8 base = 0;
// Jコマンドの処理
// Jコマンドの処理
if(set_cg_dest) {
sx = cg_dest_x >> 3;
sy = cg_dest_y;
set_cg_dest = false;
}
// Zコマンドの処理
// Zコマンドの処理
if(palette_bank != -1) {
base = (palette_bank & 0x0f) << 4;
}
// パレット取得
// パレット取得
if(get_palette) {
for(int i = 0; i < 16; i++) {
uint32 b = data[i * 3 + 0];
@@ -38,14 +38,14 @@ void AGS::load_gl3(uint8* data, int page, int transparent)
}
}
// パレット展開
// パレット展開
if(extract_palette && extract_palette_cg[page]) {
for(int i = 0; i < 16; i++) {
screen_palette[base + i] = program_palette[base + i];
}
}
// GL3展開
// GL3展開
uint8 cgdata[4][80][3];
int p = 0x36;
memset(cgdata, 0, sizeof(cgdata));
@@ -105,7 +105,7 @@ void AGS::load_gl3(uint8* data, int page, int transparent)
}
}
// VRAMに転送
// VRAMに転送
if(extract_cg) {
for(int x = 0; x < width; x++) {
for(int pl = 0; pl < 4; pl++) {
@@ -142,7 +142,7 @@ void AGS::load_gl3(uint8* data, int page, int transparent)
}
}
// 画面更新
// 画面更新
if(dest_screen == 0 && extract_cg) {
draw_screen(sx * 8, sy, width * 8, height);
}
+8 -8
View File
@@ -8,7 +8,7 @@
void AGS::load_gm3(uint8* data, int page, int transparent)
{
// ヘッダ取得
// ヘッダ取得
uint16 tmp = (data[0x30] | (data[0x31] << 8)) - 0x8000;
int sx = tmp % 80;
int sy = tmp / 80;
@@ -16,20 +16,20 @@ void AGS::load_gm3(uint8* data, int page, int transparent)
int height = data[0x34] | (data[0x35] << 8);
uint8 base = 0;
// Jコマンドの処理
// Jコマンドの処理
if(set_cg_dest) {
sx = cg_dest_x >> 3;
sy = cg_dest_y;
set_cg_dest = false;
}
// Zコマンドの処理
// Zコマンドの処理
if(palette_bank != -1) {
base = (palette_bank & 0x0f) << 4;
}
/*
// パレット取得
// パレット取得
if(get_palette) {
for(int i = 0; i < 16; i++) {
uint32 b = data[i * 3 + 0] & 0xf;
@@ -39,7 +39,7 @@ void AGS::load_gm3(uint8* data, int page, int transparent)
}
}
// パレット展開
// パレット展開
if(extract_palette && extract_palette_cg[page]) {
for(int i = 0; i < 16; i++) {
screen_palette[base + i] = program_palette[base + i];
@@ -47,7 +47,7 @@ void AGS::load_gm3(uint8* data, int page, int transparent)
}
*/
// GM3展開
// GM3展開
uint8 cgdata[3][80][3];
int p = 0x36;
memset(cgdata, 0, sizeof(cgdata));
@@ -107,7 +107,7 @@ void AGS::load_gm3(uint8* data, int page, int transparent)
}
}
// VRAMに転送
// VRAMに転送
if(extract_cg) {
for(int x = 0; x < width; x++) {
for(int pl = 0; pl < 3; pl++) {
@@ -144,7 +144,7 @@ void AGS::load_gm3(uint8* data, int page, int transparent)
}
}
// 画面更新
// 画面更新
if(dest_screen == 0 && extract_cg) {
draw_screen(sx * 8, sy * 2, width * 8, height * 2);
}
+11 -11
View File
@@ -9,7 +9,7 @@
void AGS::load_pms(uint8* data, int page, int transparent)
{
// ヘッダ取得
// ヘッダ取得
int sx = data[0x0] | (data[0x1] << 8);
int sy = data[0x2] | (data[0x3] << 8);
int ex = data[0x4] | (data[0x5] << 8);
@@ -18,7 +18,7 @@ void AGS::load_pms(uint8* data, int page, int transparent)
int height = ey - sy + 1;
uint8 mask = data[0xa];
// Jコマンドの処理
// Jコマンドの処理
if(set_cg_dest) {
sx = cg_dest_x;
sy = cg_dest_y;
@@ -27,7 +27,7 @@ void AGS::load_pms(uint8* data, int page, int transparent)
set_cg_dest = false;
}
// パレット取得
// パレット取得
uint32 tmp_palette[256];
if(get_palette) {
@@ -41,7 +41,7 @@ void AGS::load_pms(uint8* data, int page, int transparent)
}
}
if(nact->crc32 == CRC32_RANCE41 || nact->crc32 == CRC32_RANCE42 || nact->crc32 == CRC32_HASHIRIONNA2) {
// 上下16色は取得しない
// 上下16色は取得しない
for(int i = 1; i < 15; i++) {
for(int j = 0; j < 16; j++) {
if(!(mask & (0x01 << i))) {
@@ -50,7 +50,7 @@ void AGS::load_pms(uint8* data, int page, int transparent)
}
}
} else if(nact->crc32 == CRC32_MUGENHOUYOU && transparent != -1) {
// Uコマンドでは上下32色は取得しない
// Uコマンドでは上下32色は取得しない
for(int i = 2; i < 14; i++) {
for(int j = 0; j < 16; j++) {
if(!(mask & (0x01 << i))) {
@@ -69,11 +69,11 @@ void AGS::load_pms(uint8* data, int page, int transparent)
}
}
// パレット展開
// パレット展開
if (nact->sys_ver == 3) {
if((extract_palette && extract_palette_cg[page]) || nact->crc32 == CRC32_FUNNYBEE_CD) {
if(nact->crc32 == CRC32_RANCE41 || nact->crc32 == CRC32_RANCE42 || nact->crc32 == CRC32_HASHIRIONNA2) {
// 上下16色は展開しない
// 上下16色は展開しない
for(int i = 1; i < 15; i++) {
for(int j = 0; j < 16; j++) {
if(!(mask & (0x01 << i))) {
@@ -82,7 +82,7 @@ void AGS::load_pms(uint8* data, int page, int transparent)
}
}
} else if(nact->crc32 == CRC32_MUGENHOUYOU && transparent != -1) {
// Uコマンドでは上下32色は展開しない
// Uコマンドでは上下32色は展開しない
for(int i = 2; i < 14; i++) {
for(int j = 0; j < 16; j++) {
if(!(mask & (0x01 << i))) {
@@ -110,7 +110,7 @@ void AGS::load_pms(uint8* data, int page, int transparent)
}
}
// PMS展開
// PMS展開
uint8 cgdata[3][640];
int p = 0x320;
memset(cgdata, 0, sizeof(cgdata));
@@ -147,7 +147,7 @@ void AGS::load_pms(uint8* data, int page, int transparent)
}
}
// VRAMに転送
// VRAMに転送
if(extract_cg) {
uint32* dest = &vram[dest_screen][y + sy][sx];
if(transparent == -1) {
@@ -168,7 +168,7 @@ void AGS::load_pms(uint8* data, int page, int transparent)
}
}
// 画面更新
// 画面更新
if(dest_screen == 0 && extract_cg) {
draw_screen(sx, sy, width, height);
}
+326 -326
View File
@@ -38,7 +38,7 @@ void AGS::draw_text(const char* string)
}
while(string[p] != '\0') {
// 文字コード取得
// 文字コード取得
uint16 code = (uint8)string[p++];
if((0x81 <= code && code <= 0x9f) || 0xe0 <= code) {
code = (code << 8) | (uint8)string[p++];
@@ -49,7 +49,7 @@ void AGS::draw_text(const char* string)
code = convert_zenkaku(code);
}
// 文字出力
// 文字出力
if((0xeb9f <= code && code <= 0xebfc) || (0xec40 <= code && code <= 0xec9e)) {
draw_gaiji(screen, dest_x, dest_y, code, font_size, font_color);
} else {
@@ -61,13 +61,13 @@ void AGS::draw_text(const char* string)
else
draw_char(screen, dest_x, dest_y, code, font_size, font_color);
}
// 出力位置の更新
// 出力位置の更新
dest_x += (code & 0xff00) ? font_size : (font_size >> 1);
}
if (draw_menu)
menu_dest_x = dest_x;
else {
// 画面更新
// 画面更新
if(screen == 0)
draw_screen(text_dest_x, dest_y, dest_x - text_dest_x, font_size);
text_dest_x = dest_x;
@@ -76,7 +76,7 @@ void AGS::draw_text(const char* string)
void AGS::draw_char(int dest, int dest_x, int dest_y, uint16 code, int size, uint8 color)
{
// パターン取得
// パターン取得
TTF_Font* font = NULL;
switch (size) {
case 16: font = hFont16; break;
@@ -89,7 +89,7 @@ void AGS::draw_char(int dest, int dest_x, int dest_y, uint16 code, int size, uin
SDL_Color white = {0xff, 0xff, 0xff};
SDL_Surface* fs = TTF_RenderGlyph_Solid(font, sjis_to_unicode(code), white);
// パターン出力
// パターン出力
for(int y = 0; y < size && y < fs->w && dest_y + y < 480; y++) {
uint8 *pattern = (uint8*)surface_line(fs, y); // FIXME: do not assume 8bpp
for(int x = 0; x < size && x < fs->h && dest_x + x < 640; x++) {
@@ -119,7 +119,7 @@ int AGS::nearest_color(int r, int g, int b) {
void AGS::draw_char_antialias(int dest, int dest_x, int dest_y, uint16 code, int size, uint8 color, uint8 cache[])
{
// パターン取得
// パターン取得
TTF_Font* font = NULL;
switch (size) {
case 16: font = hFont16; break;
@@ -133,7 +133,7 @@ void AGS::draw_char_antialias(int dest, int dest_x, int dest_y, uint16 code, int
SDL_Color white = {0xff, 0xff, 0xff};
SDL_Surface* fs = TTF_RenderGlyph_Shaded(font, sjis_to_unicode(code), white, black);
// パターン出力
// パターン出力
for(int y = 0; y < size && y < fs->w && dest_y + y < 480; y++) {
uint8 *pattern = (uint8*)surface_line(fs, y);
uint32 *dp = &vram[dest][dest_y + y][dest_x];
@@ -165,7 +165,7 @@ void AGS::draw_gaiji(int dest, int dest_x, int dest_y, uint16 code, int size, ui
int index = (0xeb9f <= code && code <= 0xebfc) ? code - 0xeb9f : (0xec40 <= code && code <= 0xec9e) ? code - 0xec40 + 94 : 0;
bool pattern[16][16];
// パターン取得
// パターン取得
for(int y = 0; y < 16; y++) {
uint8 l = gaiji[index][y * 2 + 0];
uint8 r = gaiji[index][y * 2 + 1];
@@ -188,7 +188,7 @@ void AGS::draw_gaiji(int dest, int dest_x, int dest_y, uint16 code, int size, ui
pattern[y][15] = ((r & 0x01) != 0);
}
// パターン出力
// パターン出力
for(int y = 0; y < size && dest_y + y < 480; y++) {
for(int x = 0; x < size && dest_x + x < 640; x++) {
if(pattern[(y * 16) / size][(x * 16) / size]) {
@@ -201,164 +201,164 @@ void AGS::draw_gaiji(int dest, int dest_x, int dest_y, uint16 code, int size, ui
uint16 AGS::convert_zenkaku(uint16 code)
{
switch(code) {
case 0x20: return 0x8140; // ' '
case 0x21: return 0x8149; // '!'
case 0x22: return 0x8168; // '”'
case 0x23: return 0x8194; // '#'
case 0x24: return 0x8190; // '$'
case 0x25: return 0x8193; // '%'
case 0x26: return 0x8195; // '&'
case 0x27: return 0x8166; // '’'
case 0x28: return 0x8169; // '('
case 0x29: return 0x816a; // ')'
case 0x2a: return 0x8196; // '*'
case 0x2b: return 0x817b; // '+'
case 0x2c: return 0x8143; // ','
case 0x2d: return 0x817c; // '-'
case 0x2e: return 0x8144; // '.'
case 0x2f: return 0x815e; // '/'
case 0x30: return 0x824f; // '0'
case 0x31: return 0x8250; // '1'
case 0x32: return 0x8251; // '2'
case 0x33: return 0x8252; // '3'
case 0x34: return 0x8253; // '4'
case 0x35: return 0x8254; // '5'
case 0x36: return 0x8255; // '6'
case 0x37: return 0x8256; // '7'
case 0x38: return 0x8257; // '8'
case 0x39: return 0x8258; // '9'
case 0x3a: return 0x8146; // ':'
case 0x3b: return 0x8147; // ';'
case 0x3c: return 0x8183; // '<'
case 0x3d: return 0x8181; // '='
case 0x3e: return 0x8184; // '>'
case 0x3f: return 0x8148; // '?'
case 0x40: return 0x8197; // '@'
case 0x41: return 0x8260; // 'A'
case 0x42: return 0x8261; // 'B'
case 0x43: return 0x8262; // 'C'
case 0x44: return 0x8263; // 'D'
case 0x45: return 0x8264; // 'E'
case 0x46: return 0x8265; // 'F'
case 0x47: return 0x8266; // 'G'
case 0x48: return 0x8267; // 'H'
case 0x49: return 0x8268; // 'I'
case 0x4a: return 0x8269; // 'J'
case 0x4b: return 0x826a; // 'K'
case 0x4c: return 0x826b; // 'L'
case 0x4d: return 0x826c; // 'M'
case 0x4e: return 0x826d; // 'N'
case 0x4f: return 0x826e; // 'O'
case 0x50: return 0x826f; // 'P'
case 0x51: return 0x8270; // 'Q'
case 0x52: return 0x8271; // 'R'
case 0x53: return 0x8272; // 'S'
case 0x54: return 0x8273; // 'T'
case 0x55: return 0x8274; // 'U'
case 0x56: return 0x8275; // 'V'
case 0x57: return 0x8276; // 'W'
case 0x58: return 0x8277; // 'X'
case 0x59: return 0x8278; // 'Y'
case 0x5a: return 0x8279; // 'Z'
case 0x5b: return 0x816d; // '['
case 0x5c: return 0x818f; // '¥'
case 0x5d: return 0x816e; // ']'
case 0x5e: return 0x814f; // '^'
case 0x5f: return 0x8151; // '_'
case 0x60: return 0x8165; // '‘'
case 0x61: return 0x8281; // 'a'
case 0x62: return 0x8282; // 'b'
case 0x63: return 0x8283; // 'c'
case 0x64: return 0x8284; // 'd'
case 0x65: return 0x8285; // 'e'
case 0x66: return 0x8286; // 'f'
case 0x67: return 0x8287; // 'g'
case 0x68: return 0x8288; // 'h'
case 0x69: return 0x8289; // 'i'
case 0x6a: return 0x828a; // 'j'
case 0x6b: return 0x828b; // 'k'
case 0x6c: return 0x828c; // 'l'
case 0x6d: return 0x828d; // 'm'
case 0x6e: return 0x828e; // 'n'
case 0x6f: return 0x828f; // 'o'
case 0x70: return 0x8290; // 'p'
case 0x71: return 0x8291; // 'q'
case 0x72: return 0x8292; // 'r'
case 0x73: return 0x8293; // 's'
case 0x74: return 0x8294; // 't'
case 0x75: return 0x8295; // 'u'
case 0x76: return 0x8296; // 'v'
case 0x77: return 0x8297; // 'w'
case 0x78: return 0x8298; // 'x'
case 0x79: return 0x8299; // 'y'
case 0x7a: return 0x829a; // 'z'
case 0x7b: return 0x816f; // '{'
case 0x7c: return 0x8162; // '|'
case 0x7d: return 0x8170; // '}'
case 0x7e: return 0x8160; // '~'
case 0xa1: return 0x8142; // '。'
case 0xa2: return 0x8175; // '「'
case 0xa3: return 0x8176; // '」'
case 0xa4: return 0x8141; // '、'
case 0xa5: return 0x8145; // '・'
case 0xa6: return 0x82f0; // 'を'
case 0xa7: return 0x829f; // 'ぁ'
case 0xa8: return 0x82a1; // 'ぃ'
case 0xa9: return 0x82a3; // 'ぅ'
case 0xaa: return 0x82a5; // 'ぇ'
case 0xab: return 0x82a7; // 'ぉ'
case 0xac: return 0x82e1; // 'ゃ'
case 0xad: return 0x82e3; // 'ゅ'
case 0xae: return 0x82e5; // 'ょ'
case 0xaf: return 0x82c1; // 'っ'
case 0xb0: return 0x815b; // 'ー'
case 0xb1: return 0x82a0; // 'あ'
case 0xb2: return 0x82a2; // 'い'
case 0xb3: return 0x82a4; // 'う'
case 0xb4: return 0x82a6; // 'え'
case 0xb5: return 0x82a8; // 'お'
case 0xb6: return 0x82a9; // 'か'
case 0xb7: return 0x82ab; // 'き'
case 0xb8: return 0x82ad; // 'く'
case 0xb9: return 0x82af; // 'け'
case 0xba: return 0x82b1; // 'こ'
case 0xbb: return 0x82b3; // 'さ'
case 0xbc: return 0x82b5; // 'し'
case 0xbd: return 0x82b7; // 'す'
case 0xbe: return 0x82b9; // 'せ'
case 0xbf: return 0x82bb; // 'そ'
case 0xc0: return 0x82bd; // 'た'
case 0xc1: return 0x82bf; // 'ち'
case 0xc2: return 0x82c2; // 'つ'
case 0xc3: return 0x82c4; // 'て'
case 0xc4: return 0x82c6; // 'と'
case 0xc5: return 0x82c8; // 'な'
case 0xc6: return 0x82c9; // 'に'
case 0xc7: return 0x82ca; // 'ぬ'
case 0xc8: return 0x82cb; // 'ね'
case 0xc9: return 0x82cc; // 'の'
case 0xca: return 0x82cd; // 'は'
case 0xcb: return 0x82d0; // 'ひ'
case 0xcc: return 0x82d3; // 'ふ'
case 0xcd: return 0x82d6; // 'へ'
case 0xce: return 0x82d9; // 'ほ'
case 0xcf: return 0x82dc; // 'ま'
case 0xd0: return 0x82dd; // 'み'
case 0xd1: return 0x82de; // 'む'
case 0xd2: return 0x82df; // 'め'
case 0xd3: return 0x82e0; // 'も'
case 0xd4: return 0x82e2; // 'や'
case 0xd5: return 0x82e4; // 'ゆ'
case 0xd6: return 0x82e6; // 'よ'
case 0xd7: return 0x82e7; // 'ら'
case 0xd8: return 0x82e8; // 'り'
case 0xd9: return 0x82e9; // 'る'
case 0xda: return 0x82ea; // 'れ'
case 0xdb: return 0x82eb; // 'ろ'
case 0xdc: return 0x82ed; // 'わ'
case 0xdd: return 0x82f1; // 'ん'
case 0xde: return 0x814a; // '゛'
case 0xdf: return 0x814b; // '゜'
case 0x20: return 0x8140; // ' '
case 0x21: return 0x8149; // '!'
case 0x22: return 0x8168; // '”'
case 0x23: return 0x8194; // '#'
case 0x24: return 0x8190; // '$'
case 0x25: return 0x8193; // '%'
case 0x26: return 0x8195; // '&'
case 0x27: return 0x8166; // '’'
case 0x28: return 0x8169; // '('
case 0x29: return 0x816a; // ')'
case 0x2a: return 0x8196; // '*'
case 0x2b: return 0x817b; // '+'
case 0x2c: return 0x8143; // ','
case 0x2d: return 0x817c; // '−'
case 0x2e: return 0x8144; // '.'
case 0x2f: return 0x815e; // '/'
case 0x30: return 0x824f; // '0'
case 0x31: return 0x8250; // '1'
case 0x32: return 0x8251; // '2'
case 0x33: return 0x8252; // '3'
case 0x34: return 0x8253; // '4'
case 0x35: return 0x8254; // '5'
case 0x36: return 0x8255; // '6'
case 0x37: return 0x8256; // '7'
case 0x38: return 0x8257; // '8'
case 0x39: return 0x8258; // '9'
case 0x3a: return 0x8146; // ':'
case 0x3b: return 0x8147; // ';'
case 0x3c: return 0x8183; // '<'
case 0x3d: return 0x8181; // '='
case 0x3e: return 0x8184; // '>'
case 0x3f: return 0x8148; // '?'
case 0x40: return 0x8197; // '@'
case 0x41: return 0x8260; // 'A'
case 0x42: return 0x8261; // 'B'
case 0x43: return 0x8262; // 'C'
case 0x44: return 0x8263; // 'D'
case 0x45: return 0x8264; // 'E'
case 0x46: return 0x8265; // 'F'
case 0x47: return 0x8266; // 'G'
case 0x48: return 0x8267; // 'H'
case 0x49: return 0x8268; // 'I'
case 0x4a: return 0x8269; // 'J'
case 0x4b: return 0x826a; // 'K'
case 0x4c: return 0x826b; // 'L'
case 0x4d: return 0x826c; // 'M'
case 0x4e: return 0x826d; // 'N'
case 0x4f: return 0x826e; // 'O'
case 0x50: return 0x826f; // 'P'
case 0x51: return 0x8270; // 'Q'
case 0x52: return 0x8271; // 'R'
case 0x53: return 0x8272; // 'S'
case 0x54: return 0x8273; // 'T'
case 0x55: return 0x8274; // 'U'
case 0x56: return 0x8275; // 'V'
case 0x57: return 0x8276; // 'W'
case 0x58: return 0x8277; // 'X'
case 0x59: return 0x8278; // 'Y'
case 0x5a: return 0x8279; // 'Z'
case 0x5b: return 0x816d; // '['
case 0x5c: return 0x818f; // '¥'
case 0x5d: return 0x816e; // ']'
case 0x5e: return 0x814f; // '^'
case 0x5f: return 0x8151; // '_'
case 0x60: return 0x8165; // '‘'
case 0x61: return 0x8281; // 'a'
case 0x62: return 0x8282; // 'b'
case 0x63: return 0x8283; // 'c'
case 0x64: return 0x8284; // 'd'
case 0x65: return 0x8285; // 'e'
case 0x66: return 0x8286; // 'f'
case 0x67: return 0x8287; // 'g'
case 0x68: return 0x8288; // 'h'
case 0x69: return 0x8289; // 'i'
case 0x6a: return 0x828a; // 'j'
case 0x6b: return 0x828b; // 'k'
case 0x6c: return 0x828c; // 'l'
case 0x6d: return 0x828d; // 'm'
case 0x6e: return 0x828e; // 'n'
case 0x6f: return 0x828f; // 'o'
case 0x70: return 0x8290; // 'p'
case 0x71: return 0x8291; // 'q'
case 0x72: return 0x8292; // 'r'
case 0x73: return 0x8293; // 's'
case 0x74: return 0x8294; // 't'
case 0x75: return 0x8295; // 'u'
case 0x76: return 0x8296; // 'v'
case 0x77: return 0x8297; // 'w'
case 0x78: return 0x8298; // 'x'
case 0x79: return 0x8299; // 'y'
case 0x7a: return 0x829a; // 'z'
case 0x7b: return 0x816f; // '{'
case 0x7c: return 0x8162; // '|'
case 0x7d: return 0x8170; // '}'
case 0x7e: return 0x8160; // '〜'
case 0xa1: return 0x8142; // '。'
case 0xa2: return 0x8175; // '「'
case 0xa3: return 0x8176; // '」'
case 0xa4: return 0x8141; // '、'
case 0xa5: return 0x8145; // '・'
case 0xa6: return 0x82f0; // 'を'
case 0xa7: return 0x829f; // 'ぁ'
case 0xa8: return 0x82a1; // 'ぃ'
case 0xa9: return 0x82a3; // 'ぅ'
case 0xaa: return 0x82a5; // 'ぇ'
case 0xab: return 0x82a7; // 'ぉ'
case 0xac: return 0x82e1; // 'ゃ'
case 0xad: return 0x82e3; // 'ゅ'
case 0xae: return 0x82e5; // 'ょ'
case 0xaf: return 0x82c1; // 'っ'
case 0xb0: return 0x815b; // 'ー'
case 0xb1: return 0x82a0; // 'あ'
case 0xb2: return 0x82a2; // 'い'
case 0xb3: return 0x82a4; // 'う'
case 0xb4: return 0x82a6; // 'え'
case 0xb5: return 0x82a8; // 'お'
case 0xb6: return 0x82a9; // 'か'
case 0xb7: return 0x82ab; // 'き'
case 0xb8: return 0x82ad; // 'く'
case 0xb9: return 0x82af; // 'け'
case 0xba: return 0x82b1; // 'こ'
case 0xbb: return 0x82b3; // 'さ'
case 0xbc: return 0x82b5; // 'し'
case 0xbd: return 0x82b7; // 'す'
case 0xbe: return 0x82b9; // 'せ'
case 0xbf: return 0x82bb; // 'そ'
case 0xc0: return 0x82bd; // 'た'
case 0xc1: return 0x82bf; // 'ち'
case 0xc2: return 0x82c2; // 'つ'
case 0xc3: return 0x82c4; // 'て'
case 0xc4: return 0x82c6; // 'と'
case 0xc5: return 0x82c8; // 'な'
case 0xc6: return 0x82c9; // 'に'
case 0xc7: return 0x82ca; // 'ぬ'
case 0xc8: return 0x82cb; // 'ね'
case 0xc9: return 0x82cc; // 'の'
case 0xca: return 0x82cd; // 'は'
case 0xcb: return 0x82d0; // 'ひ'
case 0xcc: return 0x82d3; // 'ふ'
case 0xcd: return 0x82d6; // 'へ'
case 0xce: return 0x82d9; // 'ほ'
case 0xcf: return 0x82dc; // 'ま'
case 0xd0: return 0x82dd; // 'み'
case 0xd1: return 0x82de; // 'む'
case 0xd2: return 0x82df; // 'め'
case 0xd3: return 0x82e0; // 'も'
case 0xd4: return 0x82e2; // 'や'
case 0xd5: return 0x82e4; // 'ゆ'
case 0xd6: return 0x82e6; // 'よ'
case 0xd7: return 0x82e7; // 'ら'
case 0xd8: return 0x82e8; // 'り'
case 0xd9: return 0x82e9; // 'る'
case 0xda: return 0x82ea; // 'れ'
case 0xdb: return 0x82eb; // 'ろ'
case 0xdc: return 0x82ed; // 'わ'
case 0xdd: return 0x82f1; // 'ん'
case 0xde: return 0x814a; // '゛'
case 0xdf: return 0x814b; // '゜'
}
return code;
}
@@ -366,164 +366,164 @@ uint16 AGS::convert_zenkaku(uint16 code)
uint16 AGS::convert_hankaku(uint16 code)
{
switch(code) {
case 0x8140: return 0x20; // ' '
case 0x8149: return 0x21; // '!'
case 0x8168: return 0x22; // '”'
case 0x8194: return 0x23; // '#'
case 0x8190: return 0x24; // '$'
case 0x8193: return 0x25; // '%'
case 0x8195: return 0x26; // '&'
case 0x8166: return 0x27; // '’'
case 0x8169: return 0x28; // '('
case 0x816a: return 0x29; // ')'
case 0x8196: return 0x2a; // '*'
case 0x817b: return 0x2b; // '+'
case 0x8143: return 0x2c; // ','
case 0x817c: return 0x2d; // '-'
case 0x8144: return 0x2e; // '.'
case 0x815e: return 0x2f; // '/'
case 0x824f: return 0x30; // '0'
case 0x8250: return 0x31; // '1'
case 0x8251: return 0x32; // '2'
case 0x8252: return 0x33; // '3'
case 0x8253: return 0x34; // '4'
case 0x8254: return 0x35; // '5'
case 0x8255: return 0x36; // '6'
case 0x8256: return 0x37; // '7'
case 0x8257: return 0x38; // '8'
case 0x8258: return 0x39; // '9'
case 0x8146: return 0x3a; // ':'
case 0x8147: return 0x3b; // ';'
case 0x8183: return 0x3c; // '<'
case 0x8181: return 0x3d; // '='
case 0x8184: return 0x3e; // '>'
case 0x8148: return 0x3f; // '?'
case 0x8197: return 0x40; // '@'
case 0x8260: return 0x41; // 'A'
case 0x8261: return 0x42; // 'B'
case 0x8262: return 0x43; // 'C'
case 0x8263: return 0x44; // 'D'
case 0x8264: return 0x45; // 'E'
case 0x8265: return 0x46; // 'F'
case 0x8266: return 0x47; // 'G'
case 0x8267: return 0x48; // 'H'
case 0x8268: return 0x49; // 'I'
case 0x8269: return 0x4a; // 'J'
case 0x826a: return 0x4b; // 'K'
case 0x826b: return 0x4c; // 'L'
case 0x826c: return 0x4d; // 'M'
case 0x826d: return 0x4e; // 'N'
case 0x826e: return 0x4f; // 'O'
case 0x826f: return 0x50; // 'P'
case 0x8270: return 0x51; // 'Q'
case 0x8271: return 0x52; // 'R'
case 0x8272: return 0x53; // 'S'
case 0x8273: return 0x54; // 'T'
case 0x8274: return 0x55; // 'U'
case 0x8275: return 0x56; // 'V'
case 0x8276: return 0x57; // 'W'
case 0x8277: return 0x58; // 'X'
case 0x8278: return 0x59; // 'Y'
case 0x8279: return 0x5a; // 'Z'
case 0x816d: return 0x5b; // '['
case 0x818f: return 0x5c; // '¥'
case 0x816e: return 0x5d; // ']'
case 0x814f: return 0x5e; // '^'
case 0x8151: return 0x5f; // '_'
case 0x8165: return 0x60; // '‘'
case 0x8281: return 0x61; // 'a'
case 0x8282: return 0x62; // 'b'
case 0x8283: return 0x63; // 'c'
case 0x8284: return 0x64; // 'd'
case 0x8285: return 0x65; // 'e'
case 0x8286: return 0x66; // 'f'
case 0x8287: return 0x67; // 'g'
case 0x8288: return 0x68; // 'h'
case 0x8289: return 0x69; // 'i'
case 0x828a: return 0x6a; // 'j'
case 0x828b: return 0x6b; // 'k'
case 0x828c: return 0x6c; // 'l'
case 0x828d: return 0x6d; // 'm'
case 0x828e: return 0x6e; // 'n'
case 0x828f: return 0x6f; // 'o'
case 0x8290: return 0x70; // 'p'
case 0x8291: return 0x71; // 'q'
case 0x8292: return 0x72; // 'r'
case 0x8293: return 0x73; // 's'
case 0x8294: return 0x74; // 't'
case 0x8295: return 0x75; // 'u'
case 0x8296: return 0x76; // 'v'
case 0x8297: return 0x77; // 'w'
case 0x8298: return 0x78; // 'x'
case 0x8299: return 0x79; // 'y'
case 0x829a: return 0x7a; // 'z'
case 0x816f: return 0x7b; // '{'
case 0x8162: return 0x7c; // '|'
case 0x8170: return 0x7d; // '}'
case 0x8160: return 0x7e; // '~'
case 0x8142: return 0xa1; // '。'
case 0x8175: return 0xa2; // '「'
case 0x8176: return 0xa3; // '」'
case 0x8141: return 0xa4; // '、'
case 0x8145: return 0xa5; // '・'
case 0x82f0: return 0xa6; // 'を'
case 0x829f: return 0xa7; // 'ぁ'
case 0x82a1: return 0xa8; // 'ぃ'
case 0x82a3: return 0xa9; // 'ぅ'
case 0x82a5: return 0xaa; // 'ぇ'
case 0x82a7: return 0xab; // 'ぉ'
case 0x82e1: return 0xac; // 'ゃ'
case 0x82e3: return 0xad; // 'ゅ'
case 0x82e5: return 0xae; // 'ょ'
case 0x82c1: return 0xaf; // 'っ'
case 0x815b: return 0xb0; // 'ー'
case 0x82a0: return 0xb1; // 'あ'
case 0x82a2: return 0xb2; // 'い'
case 0x82a4: return 0xb3; // 'う'
case 0x82a6: return 0xb4; // 'え'
case 0x82a8: return 0xb5; // 'お'
case 0x82a9: return 0xb6; // 'か'
case 0x82ab: return 0xb7; // 'き'
case 0x82ad: return 0xb8; // 'く'
case 0x82af: return 0xb9; // 'け'
case 0x82b1: return 0xba; // 'こ'
case 0x82b3: return 0xbb; // 'さ'
case 0x82b5: return 0xbc; // 'し'
case 0x82b7: return 0xbd; // 'す'
case 0x82b9: return 0xbe; // 'せ'
case 0x82bb: return 0xbf; // 'そ'
case 0x82bd: return 0xc0; // 'た'
case 0x82bf: return 0xc1; // 'ち'
case 0x82c2: return 0xc2; // 'つ'
case 0x82c4: return 0xc3; // 'て'
case 0x82c6: return 0xc4; // 'と'
case 0x82c8: return 0xc5; // 'な'
case 0x82c9: return 0xc6; // 'に'
case 0x82ca: return 0xc7; // 'ぬ'
case 0x82cb: return 0xc8; // 'ね'
case 0x82cc: return 0xc9; // 'の'
case 0x82cd: return 0xca; // 'は'
case 0x82d0: return 0xcb; // 'ひ'
case 0x82d3: return 0xcc; // 'ふ'
case 0x82d6: return 0xcd; // 'へ'
case 0x82d9: return 0xce; // 'ほ'
case 0x82dc: return 0xcf; // 'ま'
case 0x82dd: return 0xd0; // 'み'
case 0x82de: return 0xd1; // 'む'
case 0x82df: return 0xd2; // 'め'
case 0x82e0: return 0xd3; // 'も'
case 0x82e2: return 0xd4; // 'や'
case 0x82e4: return 0xd5; // 'ゆ'
case 0x82e6: return 0xd6; // 'よ'
case 0x82e7: return 0xd7; // 'ら'
case 0x82e8: return 0xd8; // 'り'
case 0x82e9: return 0xd9; // 'る'
case 0x82ea: return 0xda; // 'れ'
case 0x82eb: return 0xdb; // 'ろ'
case 0x82ed: return 0xdc; // 'わ'
case 0x82f1: return 0xdd; // 'ん'
case 0x814a: return 0xde; // '゛'
case 0x814b: return 0xdf; // '゜'
case 0x8140: return 0x20; // ' '
case 0x8149: return 0x21; // '!'
case 0x8168: return 0x22; // '”'
case 0x8194: return 0x23; // '#'
case 0x8190: return 0x24; // '$'
case 0x8193: return 0x25; // '%'
case 0x8195: return 0x26; // '&'
case 0x8166: return 0x27; // '’'
case 0x8169: return 0x28; // '('
case 0x816a: return 0x29; // ')'
case 0x8196: return 0x2a; // '*'
case 0x817b: return 0x2b; // '+'
case 0x8143: return 0x2c; // ','
case 0x817c: return 0x2d; // '−'
case 0x8144: return 0x2e; // '.'
case 0x815e: return 0x2f; // '/'
case 0x824f: return 0x30; // '0'
case 0x8250: return 0x31; // '1'
case 0x8251: return 0x32; // '2'
case 0x8252: return 0x33; // '3'
case 0x8253: return 0x34; // '4'
case 0x8254: return 0x35; // '5'
case 0x8255: return 0x36; // '6'
case 0x8256: return 0x37; // '7'
case 0x8257: return 0x38; // '8'
case 0x8258: return 0x39; // '9'
case 0x8146: return 0x3a; // ':'
case 0x8147: return 0x3b; // ';'
case 0x8183: return 0x3c; // '<'
case 0x8181: return 0x3d; // '='
case 0x8184: return 0x3e; // '>'
case 0x8148: return 0x3f; // '?'
case 0x8197: return 0x40; // '@'
case 0x8260: return 0x41; // 'A'
case 0x8261: return 0x42; // 'B'
case 0x8262: return 0x43; // 'C'
case 0x8263: return 0x44; // 'D'
case 0x8264: return 0x45; // 'E'
case 0x8265: return 0x46; // 'F'
case 0x8266: return 0x47; // 'G'
case 0x8267: return 0x48; // 'H'
case 0x8268: return 0x49; // 'I'
case 0x8269: return 0x4a; // 'J'
case 0x826a: return 0x4b; // 'K'
case 0x826b: return 0x4c; // 'L'
case 0x826c: return 0x4d; // 'M'
case 0x826d: return 0x4e; // 'N'
case 0x826e: return 0x4f; // 'O'
case 0x826f: return 0x50; // 'P'
case 0x8270: return 0x51; // 'Q'
case 0x8271: return 0x52; // 'R'
case 0x8272: return 0x53; // 'S'
case 0x8273: return 0x54; // 'T'
case 0x8274: return 0x55; // 'U'
case 0x8275: return 0x56; // 'V'
case 0x8276: return 0x57; // 'W'
case 0x8277: return 0x58; // 'X'
case 0x8278: return 0x59; // 'Y'
case 0x8279: return 0x5a; // 'Z'
case 0x816d: return 0x5b; // '['
case 0x818f: return 0x5c; // '¥'
case 0x816e: return 0x5d; // ']'
case 0x814f: return 0x5e; // '^'
case 0x8151: return 0x5f; // '_'
case 0x8165: return 0x60; // '‘'
case 0x8281: return 0x61; // 'a'
case 0x8282: return 0x62; // 'b'
case 0x8283: return 0x63; // 'c'
case 0x8284: return 0x64; // 'd'
case 0x8285: return 0x65; // 'e'
case 0x8286: return 0x66; // 'f'
case 0x8287: return 0x67; // 'g'
case 0x8288: return 0x68; // 'h'
case 0x8289: return 0x69; // 'i'
case 0x828a: return 0x6a; // 'j'
case 0x828b: return 0x6b; // 'k'
case 0x828c: return 0x6c; // 'l'
case 0x828d: return 0x6d; // 'm'
case 0x828e: return 0x6e; // 'n'
case 0x828f: return 0x6f; // 'o'
case 0x8290: return 0x70; // 'p'
case 0x8291: return 0x71; // 'q'
case 0x8292: return 0x72; // 'r'
case 0x8293: return 0x73; // 's'
case 0x8294: return 0x74; // 't'
case 0x8295: return 0x75; // 'u'
case 0x8296: return 0x76; // 'v'
case 0x8297: return 0x77; // 'w'
case 0x8298: return 0x78; // 'x'
case 0x8299: return 0x79; // 'y'
case 0x829a: return 0x7a; // 'z'
case 0x816f: return 0x7b; // '{'
case 0x8162: return 0x7c; // '|'
case 0x8170: return 0x7d; // '}'
case 0x8160: return 0x7e; // '〜'
case 0x8142: return 0xa1; // '。'
case 0x8175: return 0xa2; // '「'
case 0x8176: return 0xa3; // '」'
case 0x8141: return 0xa4; // '、'
case 0x8145: return 0xa5; // '・'
case 0x82f0: return 0xa6; // 'を'
case 0x829f: return 0xa7; // 'ぁ'
case 0x82a1: return 0xa8; // 'ぃ'
case 0x82a3: return 0xa9; // 'ぅ'
case 0x82a5: return 0xaa; // 'ぇ'
case 0x82a7: return 0xab; // 'ぉ'
case 0x82e1: return 0xac; // 'ゃ'
case 0x82e3: return 0xad; // 'ゅ'
case 0x82e5: return 0xae; // 'ょ'
case 0x82c1: return 0xaf; // 'っ'
case 0x815b: return 0xb0; // 'ー'
case 0x82a0: return 0xb1; // 'あ'
case 0x82a2: return 0xb2; // 'い'
case 0x82a4: return 0xb3; // 'う'
case 0x82a6: return 0xb4; // 'え'
case 0x82a8: return 0xb5; // 'お'
case 0x82a9: return 0xb6; // 'か'
case 0x82ab: return 0xb7; // 'き'
case 0x82ad: return 0xb8; // 'く'
case 0x82af: return 0xb9; // 'け'
case 0x82b1: return 0xba; // 'こ'
case 0x82b3: return 0xbb; // 'さ'
case 0x82b5: return 0xbc; // 'し'
case 0x82b7: return 0xbd; // 'す'
case 0x82b9: return 0xbe; // 'せ'
case 0x82bb: return 0xbf; // 'そ'
case 0x82bd: return 0xc0; // 'た'
case 0x82bf: return 0xc1; // 'ち'
case 0x82c2: return 0xc2; // 'つ'
case 0x82c4: return 0xc3; // 'て'
case 0x82c6: return 0xc4; // 'と'
case 0x82c8: return 0xc5; // 'な'
case 0x82c9: return 0xc6; // 'に'
case 0x82ca: return 0xc7; // 'ぬ'
case 0x82cb: return 0xc8; // 'ね'
case 0x82cc: return 0xc9; // 'の'
case 0x82cd: return 0xca; // 'は'
case 0x82d0: return 0xcb; // 'ひ'
case 0x82d3: return 0xcc; // 'ふ'
case 0x82d6: return 0xcd; // 'へ'
case 0x82d9: return 0xce; // 'ほ'
case 0x82dc: return 0xcf; // 'ま'
case 0x82dd: return 0xd0; // 'み'
case 0x82de: return 0xd1; // 'む'
case 0x82df: return 0xd2; // 'め'
case 0x82e0: return 0xd3; // 'も'
case 0x82e2: return 0xd4; // 'や'
case 0x82e4: return 0xd5; // 'ゆ'
case 0x82e6: return 0xd6; // 'よ'
case 0x82e7: return 0xd7; // 'ら'
case 0x82e8: return 0xd8; // 'り'
case 0x82e9: return 0xd9; // 'る'
case 0x82ea: return 0xda; // 'れ'
case 0x82eb: return 0xdb; // 'ろ'
case 0x82ed: return 0xdc; // 'わ'
case 0x82f1: return 0xdd; // 'ん'
case 0x814a: return 0xde; // '゛'
case 0x814b: return 0xdf; // '゜'
}
return code;
}
+9 -9
View File
@@ -9,7 +9,7 @@
void AGS::load_vsp(uint8* data, int page, int transparent)
{
// ヘッダ取得
// ヘッダ取得
int sx = data[0] | (data[1] << 8);
int sy = data[2] | (data[3] << 8);
int ex = data[4] | (data[5] << 8);
@@ -18,7 +18,7 @@ void AGS::load_vsp(uint8* data, int page, int transparent)
int height = ey - sy;
uint8 base = (data[9] & 0x0f) << 4;
// Jコマンドの処理
// Jコマンドの処理
if(set_cg_dest) {
sx = cg_dest_x >> 3;
sy = cg_dest_y;
@@ -27,16 +27,16 @@ void AGS::load_vsp(uint8* data, int page, int transparent)
set_cg_dest = false;
}
// Zコマンドの処理
// Zコマンドの処理
if(nact->crc32 == CRC32_AMBIVALENZ_FD || nact->crc32 == CRC32_AMBIVALENZ_CD) {
// Z 0,numを無視する
// Z 0,numを無視する
} else {
if(palette_bank != -1) {
base = (palette_bank & 0x0f) << 4;
}
}
// パレット取得
// パレット取得
if(get_palette) {
int p = 0x0a;
for(int i = 0; i < 16; i++) {
@@ -47,7 +47,7 @@ void AGS::load_vsp(uint8* data, int page, int transparent)
}
}
// パレット展開
// パレット展開
if(nact->crc32 == CRC32_FUNNYBEE_FD || nact->crc32 == CRC32_FUNNYBEE_CD || nact->crc32 == CRC32_FUNNYBEE_PATCH) {
if(extract_palette_cg[page]) {
for(int i = 0; i < 16; i++) {
@@ -62,7 +62,7 @@ void AGS::load_vsp(uint8* data, int page, int transparent)
}
}
// VSP展開
// VSP展開
uint8 cgdata[4][2][480], mask = 0;
int p = 0x3a;
memset(cgdata, 0, sizeof(cgdata));
@@ -123,7 +123,7 @@ void AGS::load_vsp(uint8* data, int page, int transparent)
}
}
// VRAMに転送
// VRAMに転送
if(extract_cg) {
for(int y = 0; y < height; y++) {
uint8 b0, b1, b2, b3, c[8];
@@ -156,7 +156,7 @@ void AGS::load_vsp(uint8* data, int page, int transparent)
}
}
// 画面更新
// 画面更新
if(dest_screen == 0 && extract_cg) {
draw_screen(sx * 8, sy, width * 8, height);
}
+7 -7
View File
@@ -8,7 +8,7 @@
void AGS::load_vsp2l(uint8* data, int page, int transparent)
{
// ヘッダ取得
// ヘッダ取得
int sx = data[0] | (data[1] << 8);
int sy = data[2] | (data[3] << 8);
int ex = data[4] | (data[5] << 8);
@@ -17,7 +17,7 @@ void AGS::load_vsp2l(uint8* data, int page, int transparent)
int height = ey - sy;
uint8 base = 0;//(data[9] & 0x0f) << 4;
// Jコマンドの処理
// Jコマンドの処理
if(set_cg_dest) {
sx = cg_dest_x >> 3;
sy = cg_dest_y;
@@ -26,12 +26,12 @@ void AGS::load_vsp2l(uint8* data, int page, int transparent)
set_cg_dest = false;
}
// Zコマンドの処理
// Zコマンドの処理
if(palette_bank != -1) {
base = (palette_bank & 0x0f) << 4;
}
// パレット取得
// パレット取得
screen_palette[base + 0] = SETPALETTE16(0x0, 0x0, 0x0);
screen_palette[base + 1] = SETPALETTE16(0x0, 0x0, 0xf);
screen_palette[base + 2] = SETPALETTE16(0xf, 0x0, 0x0);
@@ -41,7 +41,7 @@ void AGS::load_vsp2l(uint8* data, int page, int transparent)
screen_palette[base + 6] = SETPALETTE16(0xf, 0xf, 0x0);
screen_palette[base + 7] = SETPALETTE16(0xf, 0xf, 0xf);
// VSP2L展開
// VSP2L展開
uint8 cgdata[3][2][200], mask = 0;
int p = 0x1a;
memset(cgdata, 0, sizeof(cgdata));
@@ -102,7 +102,7 @@ void AGS::load_vsp2l(uint8* data, int page, int transparent)
}
}
// VRAMに転送
// VRAMに転送
if(extract_cg) {
for(int y = 0; y < height; y++) {
uint8 b0, b1, b2, c[8];
@@ -135,7 +135,7 @@ void AGS::load_vsp2l(uint8* data, int page, int transparent)
}
}
// 画面更新
// 画面更新
if(dest_screen == 0 && extract_cg) {
draw_screen(sx * 8, sy * 2, width * 8, height * 2);
}
+14 -14
View File
@@ -36,13 +36,13 @@ bool AGS::return_text_line(int index)
text_dest_y += text_space;
text_font_maxsize = 0;
// 次の行が表示しきれるか?
// 次の行が表示しきれるか?
return (text_dest_y + text_font_size) > ey ? true : false;
}
void AGS::draw_push(int index)
{
// Pushのパターンデータ
// Pushのパターンデータ
static uint16 pattern[16] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe000,
0x9000, 0x9974, 0xe944, 0x8977, 0x8915, 0x8775, 0x0000, 0xffff
@@ -81,7 +81,7 @@ void AGS::open_text_window(int index, bool erase)
int width = ex - sx + 1;
int height = ey - sy + 1;
// 画面退避
// 画面退避
if(text_w[index - 1].push) {
if(text_w[index - 1].screen) {
free(text_w[index - 1].screen);
@@ -106,10 +106,10 @@ void AGS::open_text_window(int index, bool erase)
}
if(erase) {
// 窓初期化
// 窓初期化
draw_window(sx, sy, ex, ey, text_w[index - 1].frame, text_frame_color, text_back_color);
} else if(text_w[index - 1].push && text_w[index - 1].window) {
// 窓復帰
// 窓復帰
sx = text_w[index - 1].window_x;
sy = text_w[index - 1].window_y;
width = text_w[index - 1].window_width;
@@ -128,7 +128,7 @@ void AGS::open_text_window(int index, bool erase)
memcpy(screen_palette, palette, sizeof(screen_palette));
}
// テキスト描画位置更新
// テキスト描画位置更新
text_dest_x = text_w[index - 1].sx;
text_dest_y = text_w[index - 1].sy + text_space;;
text_font_maxsize = 0;
@@ -143,7 +143,7 @@ void AGS::close_text_window(int index, bool update)
int width = ex - sx + 1;
int height = ey - sy + 1;
// 窓退避
// 窓退避
if(text_w[index - 1].push) {
if(text_w[index - 1].window) {
free(text_w[index - 1].window);
@@ -167,7 +167,7 @@ void AGS::close_text_window(int index, bool update)
}
}
// 画面復帰
// 画面復帰
if(text_w[index - 1].push && text_w[index - 1].screen) {
sx = text_w[index - 1].screen_x;
sy = text_w[index - 1].screen_y;
@@ -187,7 +187,7 @@ void AGS::close_text_window(int index, bool update)
memcpy(screen_palette, palette, sizeof(screen_palette));
}
// テキスト描画位置更新
// テキスト描画位置更新
if(update) {
text_dest_x = text_w[index - 1].sx;
text_dest_y = text_w[index - 1].sy + text_space;;
@@ -216,7 +216,7 @@ void AGS::open_menu_window(int index)
int wwidth = wex - wsx + 1;
int wheight = wey - wsy + 1;
// 画面退避
// 画面退避
if(menu_w[index - 1].push) {
if(menu_w[index - 1].screen) {
free(menu_w[index - 1].screen);
@@ -240,7 +240,7 @@ void AGS::open_menu_window(int index)
}
}
// メニュー表示
// メニュー表示
draw_window(wsx, wsy, wex, wey, menu_w[index - 1].frame, menu_frame_color, menu_back_color);
for(int y = 0; y < height && y + sy < 480; y++) {
for(int x = 0; x < width && x + sx < 640; x++) {
@@ -271,7 +271,7 @@ void AGS::redraw_menu_window(int index, int selected)
void AGS::close_menu_window(int index)
{
// 画面復帰
// 画面復帰
if(menu_w[index - 1].push && menu_w[index - 1].screen) {
int sx = menu_w[index - 1].screen_x;
int sy = menu_w[index - 1].screen_y;
@@ -294,7 +294,7 @@ void AGS::close_menu_window(int index)
void AGS::draw_window(int sx, int sy, int ex, int ey, bool frame, uint8 frame_color, uint8 back_color)
{
// 領域の塗り潰し
// 領域の塗り潰し
for(int y = sy; y <= ey && y < 480; y++) {
uint32* dest = vram[0][y];
for(int x = sx; x <= ex && x < 640; x++) {
@@ -302,7 +302,7 @@ void AGS::draw_window(int sx, int sy, int ex, int ey, bool frame, uint8 frame_co
}
}
// 枠表示
// 枠表示
if(frame) {
for(int x = sx + 1; x <= ex - 1; x++) {
vram[0][sy + 1][x] = frame_color;
+22 -22
View File
@@ -7,44 +7,44 @@
#ifndef _CRC32_H_
#define _CRC32_H_
// ADISK.DATの先頭256bytes
// ADISK.DATの先頭256bytes
#define CRC32_CRESCENT 0x42351f2c // クレセントムーンがぁる
#define CRC32_CRESCENT 0x42351f2c // クレセントムーンがぁる
#define CRC32_DPS 0x69ea4865 // D.P.S. - Dream Program System
#define CRC32_FUKEI 0x026de326 // 婦警さんVX (ALICEの館3 UNITBASE/Y_SYUREN.LZH)
#define CRC32_INTRUDER 0xa7520fb2 // Intruder -桜屋敷の探索-
#define CRC32_TENGU 0xc942ff58 // あぶないてんぐ伝説
#define CRC32_FUKEI 0x026de326 // 婦警さんVX (ALICEの館3 UNITBASE/Y_SYUREN.LZH)
#define CRC32_INTRUDER 0xa7520fb2 // Intruder -桜屋敷の探索-
#define CRC32_TENGU 0xc942ff58 // あぶないてんぐ伝説
#define CRC32_VAMPIRE 0x957bcfbf // Little Vampire
#define CRC32_BUNKASAI 0 // あぶない文化祭前夜? (未確認)
#define CRC32_BUNKASAI 0 // あぶない文化祭前夜? (未確認)
#define CRC32_AYUMI_PROTO 0x4e2f5678 // あゆみちゃん物語 PROTO
#define CRC32_AYUMI_PROTO 0x4e2f5678 // あゆみちゃん物語 PROTO
#define CRC32_SDPS 0xc7a20cdf // Super D.P.S
#define CRC32_SDPS_MARIA 0x80d4eaca // マリアとカンパン
#define CRC32_SDPS_TONO 0xbb1edff1 // 遠野の森
#define CRC32_SDPS_KAIZOKU 0xf81829e3 // 海賊家業
#define CRC32_SDPS_MARIA 0x80d4eaca // マリアとカンパン
#define CRC32_SDPS_TONO 0xbb1edff1 // 遠野の森
#define CRC32_SDPS_KAIZOKU 0xf81829e3 // 海賊家業
#define CRC32_PROSTUDENTG_FD 0x5ffbfee7 // Prostudent -G- (FD)
#define CRC32_AMBIVALENZ_FD 0xa6b48dfe // AmbivalenZ (FD)
#define CRC32_AMBIVALENZ_CD 0x4b10db69 // AmbivalenZ (CD)
#define CRC32_DPSALL 0xd48b4ec6 // DPS全部
#define CRC32_DPSALL 0xd48b4ec6 // DPS全部
#define CRC32_FUNNYBEE_CD 0xe14e3971 // Funny Bee (CD)
#define CRC32_FUNNYBEE_PATCH 0xe14e3971 // Funny Bee (CD + Patch)
#define CRC32_FUNNYBEE_FD 0x731267fa // Funny Bee (FD)
#define CRC32_ONLYYOU 0x832aeb97 // Only You
#define CRC32_ONLYYOU_DEMO 0xc1d13e44 // Only You (DEMO)
#define CRC32_PROSTUDENTG_CD 0xfb0e4a63 // Prostudent -G- (CD)
#define CRC32_PROG_OMAKE 0x8ba18bff // Prostudent G おまけ (CRC32 of AGAME.DAT)
#define CRC32_PROG_OMAKE 0x8ba18bff // Prostudent G おまけ (CRC32 of AGAME.DAT)
#define CRC32_RANCE41 0xa43fb4b6 // Rance 4.1
#define CRC32_RANCE42 0x04d24d1e // Rance 4.2
#define CRC32_AYUMI_CD 0xd2bed9ee // あゆみちゃん物語 (CD)
#define CRC32_AYUMI_JISSHA_256 0x00d15a2b // あゆみちゃん物語 実写版
#define CRC32_AYUMI_JISSHA_FULL 0x5f66ff1d // あゆみちゃん物語 フルカラー実写版
#define CRC32_YAKATA3_CD 0x7f8f5e2a // アリスの館3 (CD)
#define CRC32_YAKATA3_FD 0x58ebcc99 // アリスの館3 (FD)
#define CRC32_HASHIRIONNA2 0x09f47cbd // 走り女2 (Rance 4.x ヒントディスク)
#define CRC32_TOUSHIN2_SP 0x2172c7b2 // 闘神都市2 ~そして、それから~
#define CRC32_OTOMESENKI 0x49a4db15 // 乙女戦記
#define CRC32_NINGYO 0xd491e7ab // 人魚 -蘿子-
#define CRC32_MUGENHOUYOU 0xbb27d1ba // 夢幻泡影
#define CRC32_AYUMI_CD 0xd2bed9ee // あゆみちゃん物語 (CD)
#define CRC32_AYUMI_JISSHA_256 0x00d15a2b // あゆみちゃん物語 実写版
#define CRC32_AYUMI_JISSHA_FULL 0x5f66ff1d // あゆみちゃん物語 フルカラー実写版
#define CRC32_YAKATA3_CD 0x7f8f5e2a // アリスの館3 (CD)
#define CRC32_YAKATA3_FD 0x58ebcc99 // アリスの館3 (FD)
#define CRC32_HASHIRIONNA2 0x09f47cbd // 走り女2 (Rance 4.x ヒントディスク)
#define CRC32_TOUSHIN2_SP 0x2172c7b2 // 闘神都市2 〜そして、それから〜
#define CRC32_OTOMESENKI 0x49a4db15 // 乙女戦記
#define CRC32_NINGYO 0xd491e7ab // 人魚 -蘿子-
#define CRC32_MUGENHOUYOU 0xbb27d1ba // 夢幻泡影
#endif
+19 -19
View File
@@ -15,7 +15,7 @@ uint8* DRI::load(const char* path, int page, int* size)
FILEIO* fio = new FILEIO();
// ページの位置を取得
// ページの位置を取得
base_path[0] = 'A';
if(!fio->Fopen(base_path, FILEIO_READ_BINARY)) {
@@ -29,7 +29,7 @@ uint8* DRI::load(const char* path, int page, int* size)
data_sector |= fio->Fgetc() << 8;
if(page > (data_sector - link_sector) * 128 - 1) {
// ページ番号不正
// ページ番号不正
fio->Fclose();
delete fio;
return NULL;
@@ -40,13 +40,13 @@ uint8* DRI::load(const char* path, int page, int* size)
int link_index = fio->Fgetc();
if(disk_index == 0 || disk_index == 0x1a) {
// 欠番
// 欠番
fio->Fclose();
delete fio;
return NULL;
}
// A??.DAT以外にリンクされている場合はファイルを開き直す
// A??.DAT以外にリンクされている場合はファイルを開き直す
if(disk_index != 1) {
base_path[0] = 'A' + disk_index - 1;
fio->Fclose();
@@ -56,7 +56,7 @@ uint8* DRI::load(const char* path, int page, int* size)
}
}
// データ取得
// データ取得
fio->Fseek(link_index * 2, FILEIO_SEEK_SET);
int start_sector = fio->Fgetc();
start_sector |= fio->Fgetc() << 8;
@@ -77,7 +77,7 @@ uint8* DRI::load(const char* path, int page, int* size)
uint8* DRI::load_mda(uint32 crc32, int page, int* size)
{
// データ取得
// データ取得
const char* fname = NULL;
switch(crc32) {
@@ -85,7 +85,7 @@ uint8* DRI::load_mda(uint32 crc32, int page, int* size)
case CRC32_AMBIVALENZ_CD: // AmbivalenZ (CD)
fname = "AMUS_AMB.MDA";
break;
case CRC32_DPSALL: // DPS全部
case CRC32_DPSALL: // DPS全部
fname = "AMUS_ALL.MDA";
break;
case CRC32_FUNNYBEE_CD: // Funny Bee (CD)
@@ -106,22 +106,22 @@ uint8* DRI::load_mda(uint32 crc32, int page, int* size)
case CRC32_RANCE42: // Rance 4.2
fname = "AMUS_R42.MDA";
break;
case CRC32_AYUMI_CD: // あゆみちゃん物語 (CD)
case CRC32_AYUMI_JISSHA_256: // あゆみちゃん物語 実写版
case CRC32_AYUMI_JISSHA_FULL: // あゆみちゃん物語 フルカラー実写版
case CRC32_AYUMI_CD: // あゆみちゃん物語 (CD)
case CRC32_AYUMI_JISSHA_256: // あゆみちゃん物語 実写版
case CRC32_AYUMI_JISSHA_FULL: // あゆみちゃん物語 フルカラー実写版
fname = "AMUS_AYM.MDA";
break;
case CRC32_YAKATA3_CD: // アリスの館3 (CD)
case CRC32_YAKATA3_FD: // アリスの館3 (FD)
case CRC32_YAKATA3_CD: // アリスの館3 (CD)
case CRC32_YAKATA3_FD: // アリスの館3 (FD)
fname = "AMUS_AL3.MDA";
break;
case CRC32_HASHIRIONNA2: // 走り女2 (Rance 4.x ヒントディスク)
case CRC32_HASHIRIONNA2: // 走り女2 (Rance 4.x ヒントディスク)
fname = "AMUS_RG2.MDA";
break;
case CRC32_OTOMESENKI: // 乙女戦記
case CRC32_OTOMESENKI: // 乙女戦記
fname = "AMUS_OTM.MDA";
break;
case CRC32_MUGENHOUYOU: // 夢幻泡影
case CRC32_MUGENHOUYOU: // 夢幻泡影
fname = "AMUS_MGN.MDA";
break;
}
@@ -135,13 +135,13 @@ uint8* DRI::load_mda(uint32 crc32, int page, int* size)
return NULL;
uint8 buf[4];
// ページの位置を取得
// ページの位置を取得
fread(buf, 4, 1, fp);
int link_sector = buf[0] | (buf[1] << 8);
int data_sector = buf[2] | (buf[3] << 8);
if(page > (data_sector - link_sector) * 128 - 1) {
// ページ番号不正
// ページ番号不正
return NULL;
}
@@ -151,11 +151,11 @@ uint8* DRI::load_mda(uint32 crc32, int page, int* size)
int link_index = buf[1];
if(disk_index == 0 || disk_index == 0x1a) {
// 欠番
// 欠番
return NULL;
}
// データ取得
// データ取得
fseek(fp, link_index * 2, SEEK_SET);
fread(buf, 4, 1, fp);
int start_sector = buf[0] | (buf[1] << 8);
+4 -4
View File
@@ -29,7 +29,7 @@ MAKO::MAKO(NACT* parent, const char* playlist) :
mix_init_flags |= MIX_INIT_MP3 | MIX_INIT_OGG;
strcpy_s(amus, 16, "AMUS.DAT");
strcpy_s(amse, 16, "AMSE.DAT"); // 実際には使わない
strcpy_s(amse, 16, "AMSE.DAT"); // 実際には使わない
for(int i = 1; i <= 99; i++) {
cd_track[i] = 0;
@@ -144,12 +144,12 @@ void MAKO::play_pcm(int page, bool loop)
DRI* dri = new DRI();
if((buffer = dri->load("AWAV.DAT", page, &size)) != NULL) {
// WAV形式 (Only You)
// WAV形式 (Only You)
mix_chunk = Mix_LoadWAV_RW(SDL_RWFromConstMem(buffer, size), 1 /* freesrc */);
free(buffer);
Mix_PlayChannel(-1, mix_chunk, loop ? -1 : 0);
} else if((buffer = dri->load("AMSE.DAT", page, &size)) != NULL) {
// AMSE形式 (乙女戦記)
// AMSE形式 (乙女戦記)
int total = (size - 12) * 2 + 0x24;
int samples = (size - 12) * 2;
@@ -186,7 +186,7 @@ void MAKO::stop_pcm()
bool MAKO::check_pcm()
{
// 再生中でtrue
// 再生中でtrue
return Mix_Playing(-1) != 0;
}
+21 -21
View File
@@ -125,7 +125,7 @@ std::vector<uint8> MAKOMidi::generate_smf(int current_max)
}
bool mute_flag = false;
// 再生情報の初期化
// 再生情報の初期化
for(int i = 0; i < 9; i++) {
play[i].timbre = 255;
play[i].timbre_type = 128;
@@ -161,7 +161,7 @@ std::vector<uint8> MAKOMidi::generate_smf(int current_max)
play[i + 3].pan = mda[i + 256].pan;
}
// システムリセット、ボリュームリセット
// システムリセット、ボリュームリセット
for(int i = 0; i < 10; i++) {
w.send_3bytes(0xb0 + i, 0x79, 0x00);
}
@@ -169,7 +169,7 @@ std::vector<uint8> MAKOMidi::generate_smf(int current_max)
w.send_3bytes(0xb0 + i, 0x07, 0x64);
}
// SSG 1-3 の音色
// SSG 1-3 の音色
for(int i = 0; i < 3; i++) {
if(mda[i + 256].bank_select < 128) {
w.send_3bytes(0xb3 + i, 0x00, mda[i + 256].bank_select);
@@ -192,11 +192,11 @@ std::vector<uint8> MAKOMidi::generate_smf(int current_max)
int current_mark = 0;
while (w.tick()) {
play_time += 10; // elapse 10ms
// 各パートの更新
// 各パートの更新
while((play[0].loop_flag || play[1].loop_flag || play[2].loop_flag ||
play[3].loop_flag || play[4].loop_flag || play[5].loop_flag ||
play[6].loop_flag || play[7].loop_flag || play[8].loop_flag) && play_time > 0.0) {
// 1単位時間だけ経過時間を更新する
// 1単位時間だけ経過時間を更新する
for(int i = 0; i < 9; i++) {
if(play[i].loop_flag && play[i].wait_time) {
play[i].wait_time--;
@@ -204,7 +204,7 @@ std::vector<uint8> MAKOMidi::generate_smf(int current_max)
}
play_time -= (float)(545455.0 / 480.0 / (float)(tempo + 0x40 - tempo_dif));
// 1単位時間だけ各パートを更新
// 1単位時間だけ各パートを更新
for(int i = 0; i < 9; i++) {
if(!play[i].loop_flag) {
play[i].wait_time = 1;
@@ -217,12 +217,12 @@ std::vector<uint8> MAKOMidi::generate_smf(int current_max)
d3 = next_mml(i);
mml[i].addr = d1 | (d2 << 8) | (d3 << 16);
if(!play[i].note_flag || mute_flag) {
// 再生停止または未使用
// 再生停止または未使用
play[i].loop_flag = false;
if(!play[0].loop_flag && !play[1].loop_flag && !play[2].loop_flag &&
!play[3].loop_flag && !play[4].loop_flag && !play[5].loop_flag &&
!play[6].loop_flag && !play[7].loop_flag && !play[8].loop_flag) {
// 全チャンネルが再生停止 (ループしない曲)
// 全チャンネルが再生停止 (ループしない曲)
for(int j = 0; j < 10; j++) {
w.send_3bytes(0xb0 + j, 0x78, 0x00);
}
@@ -233,7 +233,7 @@ std::vector<uint8> MAKOMidi::generate_smf(int current_max)
}
play[i].wait_time = 1;
} else {
// 全体としてのループ数を取得
// 全体としてのループ数を取得
int loop = ++play[i].loop_cnt;
for(int j = 0; j < 9; j++) {
if(loop > play[j].loop_cnt && play[j].loop_flag) {
@@ -242,7 +242,7 @@ std::vector<uint8> MAKOMidi::generate_smf(int current_max)
}
current_loop = loop;
if(current_loop >= current_max && current_max) {
// 指定回数だけ再生完了
// 指定回数だけ再生完了
for(int j = 0; j < 10; j++) {
w.send_3bytes(0xb0 + j, 0x78, 0x00);
}
@@ -288,14 +288,14 @@ std::vector<uint8> MAKOMidi::generate_smf(int current_max)
int n = next_mml(i);
if(n != play[i].timbre) {
if(mda[n].bank_select < 128) {
// 通常のパート
// 通常のパート
play[i].timbre_type = 128;
play[i].channel = i;
w.send_3bytes(0xb0 + play[i].channel, 0x00, mda[n].bank_select);
w.send_3bytes(0xb0 + play[i].channel, 0x20, 0x00);
w.send_2bytes(0xc0 + play[i].channel, mda[n].program_change);
} else {
// ドラムパート (ch.10)
// ドラムパート (ch.10)
play[i].timbre_type = 255 - mda[n].bank_select;
play[i].channel = 9;
}
@@ -342,7 +342,7 @@ std::vector<uint8> MAKOMidi::generate_smf(int current_max)
bool MAKOMidi::load_mml(int page)
{
// データ読み込み
// データ読み込み
DRI* dri = new DRI();
int size;
uint8* data = dri->load(amus, page, &size);
@@ -351,7 +351,7 @@ bool MAKOMidi::load_mml(int page)
return false;
}
// FM音源データの判定
// FM音源データの判定
int p, d0, d1, d2;
p = data[0] + 1;
@@ -361,7 +361,7 @@ bool MAKOMidi::load_mml(int page)
return false;
}
// MML部 読み込み&変換
// MML部 読み込み&変換
for(int i = 0; i < 9; i++) {
p = 4 * (i + 1);
int block_offset_top = data[p++];
@@ -370,7 +370,7 @@ bool MAKOMidi::load_mml(int page)
mml[i].addr = 0;
if(block_offset_top) {
// ブロックの探索
// ブロックの探索
int last_block = 0;
p = block_offset_top;
d0 = data[p++];
@@ -512,7 +512,7 @@ bool MAKOMidi::load_mml(int page)
void MAKOMidi::load_mda(int page)
{
// 未設定時の音色設定 (Piano, Acoustic Bass Drum)
// 未設定時の音色設定 (Piano, Acoustic Bass Drum)
for(int i = 0; i < 256 + 3; i++) {
mda[i].bank_select = 0;
mda[i].program_change = 0;
@@ -529,7 +529,7 @@ void MAKOMidi::load_mda(int page)
}
tempo_dif = 0x40;
// MDAデータの読み込み
// MDAデータの読み込み
char path[16];
strcpy_s(path, 16, amus);
int p = strlen(path);
@@ -550,7 +550,7 @@ void MAKOMidi::load_mda(int page)
int inst_num = data[25];
int drum_format = data[26];
// SSGパートの音色設定
// SSGパートの音色設定
for(int i = 0; i < 3; i++) {
uint8* buf = &data[map_wide * i + 27];
mda[i + 256].bank_select = buf[0];
@@ -562,7 +562,7 @@ void MAKOMidi::load_mda(int page)
mda[i + 256].pan = buf[6];
}
// 通常の音色設定
// 通常の音色設定
for(int i = 0; i < inst_num; i++) {
uint8* buf = &data[27 + map_wide * 3 + (map_wide + 1) * i];
int n = buf[0];
@@ -575,7 +575,7 @@ void MAKOMidi::load_mda(int page)
mda[n].pan = buf[7];
}
// ドラムパートの音色設定
// ドラムパートの音色設定
if(drum_format) {
uint8* buf = &data[27 + map_wide * 3 + (map_wide + 1) * inst_num];
int drum_num = buf[0];
+29 -29
View File
@@ -14,15 +14,15 @@
extern SDL_Window* g_window;
// 初期化
// 初期化
NACT::NACT(int sys_ver, uint32 crc32, const char* font_file, const char* playlist)
: sys_ver(sys_ver), crc32(crc32)
{
// デバッグコンソール起動
// デバッグコンソール起動
initialize_console();
// AG00.DAT読み込み
// AG00.DAT読み込み
FILEIO* fio = new FILEIO();
if(fio->Fopen("AG00.DAT", FILEIO_READ_BINARY)) {
int d0, d1, d2, d3;
@@ -30,12 +30,12 @@ NACT::NACT(int sys_ver, uint32 crc32, const char* font_file, const char* playlis
fio->Fgets(string);
sscanf_s(string, "%d,%d,%d,%d", &d0, &d1, &d2, &d3);
for(int i = 0; i < d1; i++) {
// 動詞の読み込み
// 動詞の読み込み
fio->Fgets(string);
memcpy(caption_verb[i], string, sizeof(string));
}
for(int i = 0; i < d2; i++) {
// 目的語の読み込み
// 目的語の読み込み
fio->Fgets(string);
memcpy(caption_obj[i], string, sizeof(string));
}
@@ -49,27 +49,27 @@ NACT::NACT(int sys_ver, uint32 crc32, const char* font_file, const char* playlis
else
strcpy_s(adisk, 16, "ADISK.DAT");
// シナリオ管理
// シナリオ管理
scenario_data = NULL;
load_scenario(0);
scenario_page = 0;
scenario_addr = 2;
label_depth = page_depth = 0;
// 変数初期化
// 変数初期化
memset(var, 0, sizeof(var));
memset(var_stack, 0, sizeof(var_stack));
memset(tvar, 0, sizeof(tvar));
memset(tvar_stack, 0, sizeof(tvar_stack));
// コマンド初期化
column = true; // 座標モード
wait_keydown = true; // ウェイト時のキー受付
seed = SDL_GetTicks(); // 乱数の種
text_wait_time = 100; // メッセージ表示のウェイト
// コマンド初期化
column = true; // 座標モード
wait_keydown = true; // ウェイト時のキー受付
seed = SDL_GetTicks(); // 乱数の種
text_wait_time = 100; // メッセージ表示のウェイト
text_wait_enb = false;
text_skip_enb = false;
mouse_sence = 16; // マウス移動感知
mouse_sence = 16; // マウス移動感知
menu_window = text_window = 1;
menu_index = 0;
@@ -84,12 +84,12 @@ NACT::NACT(int sys_ver, uint32 crc32, const char* font_file, const char* playlis
pcm_index = 0;
memset(pcm, 0, sizeof(pcm));
// 各種クラス生成
// 各種クラス生成
ags = new AGS(this, font_file);
mako = new MAKO(this, playlist);
#ifdef USE_JOY
// 入力初期化
// 入力初期化
joy_num = joyGetNumDevs();
if(joy_num) {
joyGetDevCaps(JOYSTICKID1, &joycaps, sizeof(JOYCAPS));
@@ -101,7 +101,7 @@ NACT::NACT(int sys_ver, uint32 crc32, const char* font_file, const char* playlis
NACT::~NACT()
{
// 各種クラス開放
// 各種クラス開放
if(ags) {
delete ags;
}
@@ -109,12 +109,12 @@ NACT::~NACT()
delete mako;
}
// シナリオ開放
// シナリオ開放
if(scenario_data) {
free(scenario_data);
}
// デバッグコンソール開放
// デバッグコンソール開放
release_console();
}
@@ -134,24 +134,24 @@ void NACT::mainloop()
execute(static_cast<NACT_Sys3*>(this));
break;
}
// 512コマンド実行毎にSleep(10)
// 512コマンド実行毎にSleep(10)
if(!(sleep_cnt = (sleep_cnt + 1) & 0x1ff)) {
SDL_Delay(10);
}
}
}
// コマンドパーサ
// コマンドパーサ
template <class T>
void NACT::execute(T* impl)
{
// アドレスの確認
// アドレスの確認
if(scenario_addr < 2 || scenario_addr >= scenario_size) {
fatal("Scenario error");
}
// 致命的なエラー発生 or 正常終了
// 致命的なエラー発生 or 正常終了
if(fatal_error) {
if(!post_quit) {
terminate = true;
@@ -164,16 +164,16 @@ void NACT::execute(T* impl)
impl->opening();
}
// 1コマンド実行
// 1コマンド実行
uint8 cmd = getd();
if(set_palette && cmd != 'P') {
// パレット設定が終わった
// パレット設定が終わった
ags->flush_screen(true);
set_palette = false;
}
if(verb_obj && cmd != '[' && cmd != ':') {
// 動詞-目的語メニューの表示
// 動詞-目的語メニューの表示
scenario_addr--;
impl->cmd_open_verb();
return;
@@ -368,7 +368,7 @@ void NACT::load_scenario(int page)
delete dri;
}
// 下位関数
// 下位関数
uint16 NACT::random(uint16 range)
{
@@ -379,7 +379,7 @@ uint16 NACT::random(uint16 range)
return (uint16)(((uint32)range * (seed & 0xffff)) >> 16) + 1;
}
// WinMainとのインターフェース
// WinMainとのインターフェース
int NACT::get_screen_height()
{
@@ -393,7 +393,7 @@ void NACT::select_cursor()
void NACT::select_sound(int dev)
{
// 強制的に音源を変更する
// 強制的に音源を変更する
int page = mako->current_music;
int old_dev = (1 <= page && page <= 99 && mako->cd_track[page]) ? 1 : 0;
@@ -401,7 +401,7 @@ void NACT::select_sound(int dev)
mako->cd_track[i] = dev ? i : 0;
}
// デバイスが変更された場合は再演奏する
// デバイスが変更された場合は再演奏する
if(dev != old_dev && page) {
mako->stop_music();
mako->play_music(page);
+26 -26
View File
@@ -91,7 +91,7 @@ protected:
AGS* ags;
MAKO* mako;
// コマンドパーサ
// コマンドパーサ
template <class T> void execute(T* impl);
void load_scenario(int page);
@@ -101,11 +101,11 @@ protected:
// ADISK.DAT, ASLEEP.DAT
char adisk[16];
// シナリオデータ
// シナリオデータ
uint8* scenario_data;
int scenario_size;
// アドレス、ページ管理
// アドレス、ページ管理
int scenario_addr;
int scenario_page;
int label_depth;
@@ -114,7 +114,7 @@ protected:
int page_stack[MAX_STACK];
int addr_stack[MAX_STACK];
// 変数
// 変数
uint16 var[512];
uint16 var_stack[30][20];
// char tvar[10][22];
@@ -124,31 +124,31 @@ protected:
// DPS
bool text_refresh;
bool column; // 座標モード
bool wait_keydown; // ウェイト時のキー受付
int text_wait_time; // テキスト表示のウェイト
int mouse_sence; // マウス感度
bool column; // 座標モード
bool wait_keydown; // ウェイト時のキー受付
int text_wait_time; // テキスト表示のウェイト
int mouse_sence; // マウス感度
int menu_window; // メニューウィンドウ番号
int text_window; // メッセージウィンドウ番号
bool show_push; // Push表示
bool clear_text; // メニュー後のメッセージウィンドウ消去
int menu_window; // メニューウィンドウ番号
int text_window; // メッセージウィンドウ番号
bool show_push; // Push表示
bool clear_text; // メニュー後のメッセージウィンドウ消去
int menu_index; // メニュー登録のインデックス
int menu_addr[64]; // ジャンプ先のアドレス
int menu_verb[64]; // 登録された動詞
int menu_obj[64]; // 登録された目的語
int menu_index; // メニュー登録のインデックス
int menu_addr[64]; // ジャンプ先のアドレス
int menu_verb[64]; // 登録された動詞
int menu_obj[64]; // 登録された目的語
char caption_verb[MAX_VERB][MAX_CAPTION];
char caption_obj[MAX_OBJ][MAX_CAPTION];
bool verb_obj; // 動詞-形容詞型メニューの定義中
bool verb_obj; // 動詞-形容詞型メニューの定義中
bool set_palette;
int pcm_index;
int pcm[MAX_PCM];
// 下位関数
// 下位関数
uint8 getd() { return scenario_data[scenario_addr++]; }
uint16 getw() {
uint16 val = scenario_data[scenario_addr] | (scenario_data[scenario_addr + 1] << 8);
@@ -171,13 +171,13 @@ protected:
static uint32 calc_crc32(const char* game_id);
// Y27 ダイアログ
// Y27 ダイアログ
void text_dialog();
// 終了フラグ
// 終了フラグ
bool terminate;
// デバッグログ
// デバッグログ
void initialize_console();
void release_console();
@@ -193,8 +193,8 @@ public:
static const int get_sys_ver(uint32 crc32);
const char* get_title();
bool text_skip_enb; // メッセージスキップ
bool text_wait_enb; // テキスト表示のウェイト有効/無効
bool text_skip_enb; // メッセージスキップ
bool text_wait_enb; // テキスト表示のウェイト有効/無効
int sys_ver;
uint32 crc32;
@@ -202,7 +202,7 @@ public:
char tvar[10][22];
int tvar_index, tvar_maxlen;
// デバッグログ
// デバッグログ
void output_console(char log[]);
int get_scenario_page() const { return scenario_page; }
@@ -255,9 +255,9 @@ private:
uint16 cali();
uint16 cali2();
int menu_max; // メニューの改ページ
int menu_max; // メニューの改ページ
// Intruder Zコマンド
// Intruder Zコマンド
int paint_x;
int paint_y;
int map_page;
+3 -3
View File
@@ -48,7 +48,7 @@ uint8 NACT::get_key()
if (pump_events(ags))
terminate = true;
// キーボード&マウス
// キーボード&マウス
const Uint8* key = SDL_GetKeyboardState(NULL);
Uint32 mouse;
if (fingers) {
@@ -66,10 +66,10 @@ uint8 NACT::get_key()
if(key[SDL_SCANCODE_ESCAPE] ) val |= 0x40;
if(key[SDL_SCANCODE_TAB ] ) val |= 0x80;
// マウス移動で方向入力はサポートしない
// マウス移動で方向入力はサポートしない
#ifdef USE_JOY
// ジョイスティック
// ジョイスティック
if(joy_num > 0) {
JOYINFO joyinfo;
if(joyGetPos(JOYSTICKID1, &joyinfo) == JOYERR_NOERROR) {
+76 -76
View File
@@ -2,11 +2,11 @@
ALICE SOFT SYSTEM1 for Win32
D.P.S. - Dream Program System
Intruder -桜屋敷の探索-
Intruder -桜屋敷の探索-
Little Vampire
あぶないてんぐ伝説
クレセントムーンがぁる
婦警さん物語VX
あぶないてんぐ伝説
クレセントムーンがぁる
婦警さん物語VX
[ NACT - command ]
*/
@@ -67,13 +67,13 @@ NACT_Sys1::NACT_Sys1(uint32 crc32, const char* font_file, const char* playlist)
switch (crc32) {
case CRC32_DPS:
text_refresh = false;
strcpy_s(tvar[0], 22, "カスタム");
strcpy_s(tvar[1], 22, "リーナス");
strcpy_s(tvar[2], 22, "かつみ");
strcpy_s(tvar[3], 22, "由美子");
strcpy_s(tvar[4], 22, "いつみ");
strcpy_s(tvar[5], 22, "ひとみ");
strcpy_s(tvar[6], 22, "真理子");
strcpy_s(tvar[0], 22, "カスタム");
strcpy_s(tvar[1], 22, "リーナス");
strcpy_s(tvar[2], 22, "かつみ");
strcpy_s(tvar[3], 22, "由美子");
strcpy_s(tvar[4], 22, "いつみ");
strcpy_s(tvar[5], 22, "ひとみ");
strcpy_s(tvar[6], 22, "真理子");
break;
case CRC32_INTRUDER:
menu_max = 11;
@@ -249,7 +249,7 @@ void NACT_Sys1::cmd_label_call()
#endif
if(next_addr == 0) {
// リターン
// リターン
if(label_depth == 0) {
// fatal_error = true;
return;
@@ -286,7 +286,7 @@ void NACT_Sys1::cmd_page_call()
#endif
if(next_page == 0) {
// リターン
// リターン
if(page_depth == 0) {
// fatal_error = true;
return;
@@ -350,7 +350,7 @@ void NACT_Sys1::cmd_open_menu()
cmd_a();
}
// クリック中の間は待機
// クリック中の間は待機
for(;;) {
if(terminate) {
return;
@@ -362,11 +362,11 @@ void NACT_Sys1::cmd_open_menu()
SDL_Delay(10);
}
// メニュー表示
// メニュー表示
ags->open_menu_window(menu_window);
int current_index = 0;
// マウス移動
// マウス移動
int sx = ags->menu_w[menu_window - 1].sx;
int sy = ags->menu_w[menu_window - 1].sy;
int ex = ags->menu_w[menu_window - 1].ex;
@@ -375,9 +375,9 @@ void NACT_Sys1::cmd_open_menu()
int height = ags->menu_font_size + 4;
set_cursor(mx, my);
// メニュー選択
// メニュー選択
for(;;) {
// 入力待機
// 入力待機
int val = 0, current_mx = mx, current_my = my;
for(;;) {
if(terminate) {
@@ -406,7 +406,7 @@ void NACT_Sys1::cmd_open_menu()
}
if(val == 0) {
// マウス操作
// マウス操作
mx = current_mx; my = current_my;
int index = (my - sy) / height;
if(sx <= mx && mx <= ex && 0 <= index && index < menu_index) {
@@ -432,7 +432,7 @@ void NACT_Sys1::cmd_open_menu()
}
}
// 画面更新
// 画面更新
ags->close_menu_window(menu_window);
if(clear_text) {
ags->clear_text_window(text_window, true);
@@ -485,7 +485,7 @@ void NACT_Sys1::cmd_set_verbobj2()
void NACT_Sys1::cmd_open_verb()
{
// 動詞メニューの表示
// 動詞メニューの表示
#if defined(_DEBUG_CONSOLE)
char log[128];
sprintf_s(log, 128, "\nopen verb-obj menu");
@@ -493,7 +493,7 @@ void NACT_Sys1::cmd_open_verb()
#endif
verb_obj = false;
// 表示する動詞のチェック
// 表示する動詞のチェック
int chk[MAX_VERB], page = 0, cnt = 0;
memset(chk, 0, sizeof(chk));
@@ -507,7 +507,7 @@ void NACT_Sys1::cmd_open_verb()
}
top:
// メニュー項目の準備
// メニュー項目の準備
int id[32], index = 0;
ags->clear_menu_window();
@@ -515,7 +515,7 @@ top:
ags->draw_menu = true;
if(cnt <= menu_max) {
// 1ページ内に全て表示できる
// 1ページ内に全て表示できる
for(int i = 0; i < MAX_VERB; i++) {
if(chk[i]) {
ags->menu_dest_x = 2;
@@ -541,20 +541,20 @@ top2:
}
}
if(index == 0) {
// 最初のページに戻る
// 最初のページに戻る
page = 0;
goto top2;
}
// 次のページを追加
// 次のページを追加
ags->menu_dest_x = 2;
ags->menu_dest_y += 2;
ags->draw_text("次のページ");
ags->draw_text("次のページ");
id[index++] = -1;
ags->menu_dest_y += ags->menu_font_size + 2;
}
ags->draw_menu = false;
// クリック中の間は待機
// クリック中の間は待機
for(;;) {
if(terminate) {
return;
@@ -566,11 +566,11 @@ top2:
SDL_Delay(10);
}
// メニュー表示
// メニュー表示
ags->open_menu_window(menu_window);
int current_index = 0;
// マウス移動
// マウス移動
int sx = ags->menu_w[menu_window - 1].sx;
int sy = ags->menu_w[menu_window - 1].sy;
int ex = ags->menu_w[menu_window - 1].ex;
@@ -579,9 +579,9 @@ top2:
int height = ags->menu_font_size + 4;
set_cursor(mx, my);
// メニュー選択
// メニュー選択
for(;;) {
// 入力待機
// 入力待機
int val = 0, current_mx = mx, current_my = my;
for(;;) {
if(terminate) {
@@ -610,7 +610,7 @@ top2:
}
if(val == 0) {
// マウス操作
// マウス操作
mx = current_mx; my = current_my;
int mindex = (my - sy) / height;
if(sx <= mx && mx <= ex && 0 <= mindex && mindex < index) {
@@ -636,7 +636,7 @@ top2:
}
}
// 画面更新
// 画面更新
ags->close_menu_window(menu_window);
if(clear_text) {
ags->clear_text_window(text_window, true);
@@ -654,10 +654,10 @@ top2:
void NACT_Sys1::cmd_open_obj(int verb)
{
// 目的語メニューの表示
// 目的語メニューの表示
verb_obj = false;
// 表示する目的語のチェック
// 表示する目的語のチェック
int chk[MAX_OBJ], addr[MAX_OBJ], page = 0, cnt = 0;
memset(chk, 0, sizeof(chk));
@@ -672,17 +672,17 @@ void NACT_Sys1::cmd_open_obj(int verb)
cnt++;
}
}
// 目的語がない場合
// 目的語がない場合
if(chk[0] && cnt == 1) {
scenario_addr = addr[0];
return;
}
// 以後、obj=0は戻るとして扱う
// 以後、obj=0は戻るとして扱う
chk[0] = 0;
addr[0] = scenario_data[0] | (scenario_data[1] << 8);
top:
// メニュー項目の準備
// メニュー項目の準備
int id[32], index = 0;
ags->clear_menu_window();
@@ -690,7 +690,7 @@ top:
ags->draw_menu = true;
if(cnt <= menu_max - 1) {
// 1ページ内に全て表示できる
// 1ページ内に全て表示できる
for(int i = 0; i < MAX_OBJ; i++) {
if(chk[i]) {
ags->menu_dest_x = 2;
@@ -700,10 +700,10 @@ top:
ags->menu_dest_y += ags->menu_font_size + 2;
}
}
// 戻るを追加
// 戻るを追加
ags->menu_dest_x = 2;
ags->menu_dest_y += 2;
ags->draw_text("戻る");
ags->draw_text("戻る");
id[index++] = 0;
ags->menu_dest_y += ags->menu_font_size + 2;
} else {
@@ -722,27 +722,27 @@ top2:
}
}
if(index == 0) {
// 最初のページに戻る
// 最初のページに戻る
page = 0;
goto top2;
}
// 戻るを追加
// 戻るを追加
ags->menu_dest_x = 2;
ags->menu_dest_y += 2;
ags->draw_text("戻る");
ags->draw_text("戻る");
id[index++] = 0;
ags->menu_dest_y += ags->menu_font_size + 2;
// 次のページを追加
// 次のページを追加
ags->menu_dest_x = 2;
ags->menu_dest_y += 2;
ags->draw_text("次のページ");
ags->draw_text("次のページ");
id[index++] = -1;
ags->menu_dest_y += ags->menu_font_size + 2;
}
ags->draw_menu = false;
// クリック中の間は待機
// クリック中の間は待機
for(;;) {
if(terminate) {
return;
@@ -754,11 +754,11 @@ top2:
SDL_Delay(10);
}
// メニュー表示
// メニュー表示
ags->open_menu_window(menu_window);
int current_index = 0;
// マウス移動
// マウス移動
int sx = ags->menu_w[menu_window - 1].sx;
int sy = ags->menu_w[menu_window - 1].sy;
int ex = ags->menu_w[menu_window - 1].ex;
@@ -767,9 +767,9 @@ top2:
int height = ags->menu_font_size + 4;
set_cursor(mx, my);
// メニュー選択
// メニュー選択
for(;;) {
// 入力待機
// 入力待機
int val = 0, current_mx = mx, current_my = my;
for(;;) {
if(terminate) {
@@ -798,7 +798,7 @@ top2:
}
if(val == 0) {
// マウス操作
// マウス操作
mx = current_mx; my = current_my;
int mindex = (my - sy) / height;
if(sx <= mx && mx <= ex && 0 <= mindex && mindex < index) {
@@ -824,7 +824,7 @@ top2:
}
}
// 画面更新
// 画面更新
ags->close_menu_window(menu_window);
if(clear_text) {
ags->clear_text_window(text_window, true);
@@ -848,12 +848,12 @@ void NACT_Sys1::cmd_a()
#endif
if(!text_skip_enb) {
// Pushマークの表示
// Pushマークの表示
if(show_push) {
ags->draw_push(text_window);
}
// キーが押されて離されるまで待機
// キーが押されて離されるまで待機
for(;;) {
if(terminate) {
return;
@@ -875,7 +875,7 @@ void NACT_Sys1::cmd_a()
}
}
// ウィンドウ更新
// ウィンドウ更新
ags->clear_text_window(text_window, true);
if (crc32 == CRC32_DPS)
@@ -884,17 +884,17 @@ void NACT_Sys1::cmd_a()
void NACT_Sys1::cmd_b()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_d()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_e()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_f()
@@ -936,22 +936,22 @@ void NACT_Sys1::cmd_g()
void NACT_Sys1::cmd_h()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_i()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_j()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_k()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_l()
@@ -1062,17 +1062,17 @@ void NACT_Sys1::cmd_l()
void NACT_Sys1::cmd_m()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_n()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_o()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_p()
@@ -1199,7 +1199,7 @@ void NACT_Sys1::cmd_r()
output_console(log);
#endif
// ウィンドウの表示範囲外の場合は改ページ
// ウィンドウの表示範囲外の場合は改ページ
if(ags->return_text_line(text_window)) {
cmd_a();
}
@@ -1224,7 +1224,7 @@ void NACT_Sys1::cmd_s()
void NACT_Sys1::cmd_t()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_u()
@@ -1251,12 +1251,12 @@ void NACT_Sys1::cmd_u()
void NACT_Sys1::cmd_v()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_w()
{
// 未使用
// 未使用
}
void NACT_Sys1::cmd_x()
@@ -1457,9 +1457,9 @@ void NACT_Sys1::cmd_z()
switch (crc32) {
case CRC32_INTRUDER:
if(cmd == 1 && 1 <= param && param <= 4) {
const char* buf[4] = {"<", "∧", ">", "∨"};
const char* buf[4] = {"<", "∧", ">", "∨"};
// 矢印を消去する
// 矢印を消去する
if(map_page) {
ags->load_cg(map_page, -1);
if(paint_x) {
@@ -1467,7 +1467,7 @@ void NACT_Sys1::cmd_z()
}
}
// 矢印を表示する
// 矢印を表示する
int x = ags->text_dest_x;
int y = ags->text_dest_y;
int color = ags->text_font_color;
@@ -1515,7 +1515,7 @@ void NACT_Sys1::cmd_z()
}
// 下位関数
// 下位関数
uint16 NACT_Sys1::cali()
{
@@ -1526,7 +1526,7 @@ uint16 NACT_Sys1::cali()
while(p > 0) {
uint8 dat = getd();
// 除算はサポートしない?
// 除算はサポートしない?
if(0x80 <= dat && dat <= 0xbf) {
cali[p++] = var[dat & 0x3f];
} else if(0xc0 <= dat && dat <= 0xff) {
+46 -46
View File
@@ -266,7 +266,7 @@ void NACT_Sys2::cmd_label_call()
#endif
if(next_addr == 0) {
// リターン
// リターン
if(label_depth == 0) {
// fatal_error = true;
return;
@@ -303,7 +303,7 @@ void NACT_Sys2::cmd_page_call()
#endif
if(next_page == 0) {
// リターン
// リターン
if(page_depth == 0) {
// fatal_error = true;
return;
@@ -363,7 +363,7 @@ void NACT_Sys2::cmd_open_menu()
return;
}
// クリック中の間は待機
// クリック中の間は待機
for(;;) {
if(terminate) {
return;
@@ -375,11 +375,11 @@ void NACT_Sys2::cmd_open_menu()
SDL_Delay(10);
}
// メニュー表示
// メニュー表示
ags->open_menu_window(menu_window);
int current_index = 0;
// マウス移動
// マウス移動
int sx = ags->menu_w[menu_window - 1].sx;
int sy = ags->menu_w[menu_window - 1].sy;
int ex = ags->menu_w[menu_window - 1].ex;
@@ -388,9 +388,9 @@ void NACT_Sys2::cmd_open_menu()
int height = ags->menu_font_size + 4;
set_cursor(mx, my);
// メニュー選択
// メニュー選択
for(;;) {
// 入力待機
// 入力待機
int val = 0, current_mx = mx, current_my = my;
for(;;) {
if(terminate) {
@@ -419,7 +419,7 @@ void NACT_Sys2::cmd_open_menu()
}
if(val == 0) {
// マウス操作
// マウス操作
mx = current_mx; my = current_my;
int index = (my - sy) / height;
if(sx <= mx && mx <= ex && 0 <= index && index < menu_index) {
@@ -445,7 +445,7 @@ void NACT_Sys2::cmd_open_menu()
}
}
// 画面更新
// 画面更新
ags->close_menu_window(menu_window);
if(clear_text) {
ags->clear_text_window(text_window, true);
@@ -498,7 +498,7 @@ void NACT_Sys2::cmd_set_verbobj2()
void NACT_Sys2::cmd_open_verb()
{
// 動詞メニューの表示
// 動詞メニューの表示
#if defined(_DEBUG_CONSOLE)
char log[128];
sprintf_s(log, 128, "\nopen verb-obj menu");
@@ -506,7 +506,7 @@ void NACT_Sys2::cmd_open_verb()
#endif
verb_obj = false;
// 表示する動詞のチェック
// 表示する動詞のチェック
int chk[MAX_VERB], page = 0;
memset(chk, 0, sizeof(chk));
@@ -514,7 +514,7 @@ void NACT_Sys2::cmd_open_verb()
chk[menu_verb[i]] = 1;
}
// メニュー項目の準備
// メニュー項目の準備
int id[32], index = 0;
ags->clear_menu_window();
@@ -532,7 +532,7 @@ void NACT_Sys2::cmd_open_verb()
}
ags->draw_menu = false;
// クリック中の間は待機
// クリック中の間は待機
for(;;) {
if(terminate) {
return;
@@ -544,11 +544,11 @@ void NACT_Sys2::cmd_open_verb()
SDL_Delay(10);
}
// メニュー表示
// メニュー表示
ags->open_menu_window(menu_window);
int current_index = 0;
// マウス移動
// マウス移動
int sx = ags->menu_w[menu_window - 1].sx;
int sy = ags->menu_w[menu_window - 1].sy;
int ex = ags->menu_w[menu_window - 1].ex;
@@ -557,9 +557,9 @@ void NACT_Sys2::cmd_open_verb()
int height = ags->menu_font_size + 4;
set_cursor(mx, my);
// メニュー選択
// メニュー選択
for(;;) {
// 入力待機
// 入力待機
int val = 0, current_mx = mx, current_my = my;
for(;;) {
if(terminate) {
@@ -588,7 +588,7 @@ void NACT_Sys2::cmd_open_verb()
}
if(val == 0) {
// マウス操作
// マウス操作
mx = current_mx; my = current_my;
int mindex = (my - sy) / height;
if(sx <= mx && mx <= ex && 0 <= mindex && mindex < index) {
@@ -614,7 +614,7 @@ void NACT_Sys2::cmd_open_verb()
}
}
// 画面更新
// 画面更新
ags->close_menu_window(menu_window);
if(clear_text) {
ags->clear_text_window(text_window, true);
@@ -630,10 +630,10 @@ void NACT_Sys2::cmd_open_verb()
void NACT_Sys2::cmd_open_obj(int verb)
{
// 目的語メニューの表示
// 目的語メニューの表示
verb_obj = false;
// 表示する目的語のチェック
// 表示する目的語のチェック
int chk[MAX_OBJ], addr[MAX_OBJ], page = 0;
memset(chk, 0, sizeof(chk));
@@ -643,16 +643,16 @@ void NACT_Sys2::cmd_open_obj(int verb)
addr[menu_obj[i]] = menu_addr[i];
}
}
// 目的語がない場合
// 目的語がない場合
if(chk[0]) {
scenario_addr = addr[0];
return;
}
// 以後、obj=0は戻るとして扱う
// 以後、obj=0は戻るとして扱う
chk[0] = 0;
addr[0] = scenario_data[0] | (scenario_data[1] << 8);
// メニュー項目の準備
// メニュー項目の準備
int id[32], index = 0;
ags->clear_menu_window();
@@ -668,15 +668,15 @@ void NACT_Sys2::cmd_open_obj(int verb)
ags->menu_dest_y += ags->menu_font_size + 2;
}
}
// 戻るを追加
// 戻るを追加
ags->menu_dest_x = 2;
ags->menu_dest_y += 2;
ags->draw_text("戻る");
ags->draw_text("戻る");
id[index++] = 0;
ags->menu_dest_y += ags->menu_font_size + 2;
ags->draw_menu = false;
// クリック中の間は待機
// クリック中の間は待機
for(;;) {
if(terminate) {
return;
@@ -688,11 +688,11 @@ void NACT_Sys2::cmd_open_obj(int verb)
SDL_Delay(10);
}
// メニュー表示
// メニュー表示
ags->open_menu_window(menu_window);
int current_index = 0;
// マウス移動
// マウス移動
int sx = ags->menu_w[menu_window - 1].sx;
int sy = ags->menu_w[menu_window - 1].sy;
int ex = ags->menu_w[menu_window - 1].ex;
@@ -701,9 +701,9 @@ void NACT_Sys2::cmd_open_obj(int verb)
int height = ags->menu_font_size + 4;
set_cursor(mx, my);
// メニュー選択
// メニュー選択
for(;;) {
// 入力待機
// 入力待機
int val = 0, current_mx = mx, current_my = my;
for(;;) {
if(terminate) {
@@ -732,7 +732,7 @@ void NACT_Sys2::cmd_open_obj(int verb)
}
if(val == 0) {
// マウス操作
// マウス操作
mx = current_mx; my = current_my;
int mindex = (my - sy) / height;
if(sx <= mx && mx <= ex && 0 <= mindex && mindex < index) {
@@ -758,7 +758,7 @@ void NACT_Sys2::cmd_open_obj(int verb)
}
}
// 画面更新
// 画面更新
ags->close_menu_window(menu_window);
if(clear_text) {
ags->clear_text_window(text_window, true);
@@ -780,12 +780,12 @@ void NACT_Sys2::cmd_a()
#endif
if(!text_skip_enb) {
// Pushマークの表示
// Pushマークの表示
if(show_push) {
ags->draw_push(text_window);
}
// キーが押されて離されるまで待機
// キーが押されて離されるまで待機
for(;;) {
if(terminate) {
return;
@@ -807,7 +807,7 @@ void NACT_Sys2::cmd_a()
}
}
// ウィンドウ更新
// ウィンドウ更新
ags->clear_text_window(text_window, true);
}
@@ -834,7 +834,7 @@ void NACT_Sys2::cmd_b()
ags->menu_w[index - 1].ey = p4;
ags->menu_w[index - 1].push = p5 ? true : false;
// 退避画面の破棄
// 退避画面の破棄
if(ags->menu_w[index - 1].screen) {
free(ags->menu_w[index - 1].screen);
ags->menu_w[index - 1].screen = NULL;
@@ -852,19 +852,19 @@ void NACT_Sys2::cmd_b()
ags->text_w[index - 1].ey = p4;
ags->text_w[index - 1].push = p5 ? true : false;
// 退避画面の破棄
// 退避画面の破棄
if(ags->text_w[index - 1].screen) {
free(ags->text_w[index - 1].screen);
ags->text_w[index - 1].screen = NULL;
}
// 退避窓の破棄
// 退避窓の破棄
if(ags->text_w[index - 1].window) {
free(ags->text_w[index - 1].window);
ags->text_w[index - 1].window = NULL;
}
} else if(cmd == 4) {
if(p5 == 0) {
// ウィンドウ退避
// ウィンドウ退避
// if(crc32 == CRC32_PROSTUDENTG_FD) {
// ags->text_w[index - 1].frame = (index == 1 || index == 3) ? true : false;
// } else
@@ -872,7 +872,7 @@ void NACT_Sys2::cmd_b()
ags->open_text_window(index, p4 ? false : true);
text_window = index;
} else {
// ウィンドウ復帰
// ウィンドウ復帰
ags->close_text_window(index, text_window == index ? true : false);
}
}
@@ -949,7 +949,7 @@ void NACT_Sys2::cmd_h()
output_console(log);
#endif
// 8桁の文字列を生成
// 8桁の文字列を生成
char tmp[8];
tmp[0] = '0';
tmp[1] = '0';
@@ -965,7 +965,7 @@ void NACT_Sys2::cmd_h()
tmp[i] = ' ';
}
// 指定した桁数だけ出力
// 指定した桁数だけ出力
char string[9];
int p = 0;
if(length == 0) {
@@ -1010,7 +1010,7 @@ void NACT_Sys2::cmd_j()
void NACT_Sys2::cmd_k()
{
// 未使用
// 未使用
cmd_r();
}
@@ -1301,7 +1301,7 @@ void NACT_Sys2::cmd_r()
output_console(log);
#endif
// ウィンドウの表示範囲外の場合は改ページ
// ウィンドウの表示範囲外の場合は改ページ
if(ags->return_text_line(text_window)) {
cmd_a();
}
@@ -1574,7 +1574,7 @@ void NACT_Sys2::cmd_z()
}
// 下位関数
// 下位関数
uint16 NACT_Sys2::cali()
{
+53 -53
View File
@@ -41,7 +41,7 @@ void NACT_Sys3::cmd_branch()
int t_addr = scenario_addr + 2;
int f_addr = getw();
// sigmarion3 最適化誤爆の対策
// sigmarion3 最適化誤爆の対策
scenario_addr = condition ? t_addr : f_addr;
#if defined(_DEBUG_CONSOLE)
@@ -74,7 +74,7 @@ void NACT_Sys3::cmd_label_call()
#endif
if(next_addr == 0) {
// リターン
// リターン
if(label_depth == 0) {
// fatal_error = true;
return;
@@ -111,7 +111,7 @@ void NACT_Sys3::cmd_page_call()
#endif
if(next_page == 0) {
// リターン
// リターン
if(page_depth == 0) {
// fatal_error = true;
return;
@@ -160,7 +160,7 @@ void NACT_Sys3::cmd_set_menu()
int NACT_Sys3::menu_select(int num_items)
{
// クリック中の間は待機
// クリック中の間は待機
for(;;) {
if(terminate) {
return -1;
@@ -172,11 +172,11 @@ int NACT_Sys3::menu_select(int num_items)
SDL_Delay(16);
}
// メニュー表示
// メニュー表示
ags->open_menu_window(menu_window);
int current_index = 0;
// マウス移動
// マウス移動
int sx = ags->menu_w[menu_window - 1].sx;
int sy = ags->menu_w[menu_window - 1].sy;
int ex = ags->menu_w[menu_window - 1].ex;
@@ -187,9 +187,9 @@ int NACT_Sys3::menu_select(int num_items)
bool selectable = true;
// メニュー選択
// メニュー選択
for(;;) {
// 入力待機
// 入力待機
int val = 0, current_mx = mx, current_my = my;
for(;;) {
if(terminate) {
@@ -219,7 +219,7 @@ int NACT_Sys3::menu_select(int num_items)
}
if(val == 0) {
// マウス操作
// マウス操作
mx = current_mx; my = current_my;
int index = (my - sy) / height;
if(sx <= mx && mx <= ex && 0 <= index && index < num_items) {
@@ -249,7 +249,7 @@ int NACT_Sys3::menu_select(int num_items)
}
}
// 画面更新
// 画面更新
ags->close_menu_window(menu_window);
if(clear_text) {
ags->clear_text_window(text_window, true);
@@ -322,7 +322,7 @@ void NACT_Sys3::cmd_set_verbobj2()
void NACT_Sys3::cmd_open_verb()
{
// 動詞メニューの表示
// 動詞メニューの表示
#if defined(_DEBUG_CONSOLE)
char log[128];
sprintf_s(log, 128, "\nopen verb-obj menu");
@@ -330,7 +330,7 @@ void NACT_Sys3::cmd_open_verb()
#endif
verb_obj = false;
// 表示する動詞のチェック
// 表示する動詞のチェック
int chk[MAX_VERB], page = 0;
memset(chk, 0, sizeof(chk));
@@ -338,7 +338,7 @@ void NACT_Sys3::cmd_open_verb()
chk[menu_verb[i]] = 1;
}
// メニュー項目の準備
// メニュー項目の準備
int id[32], index = 0;
ags->clear_menu_window();
@@ -370,10 +370,10 @@ void NACT_Sys3::cmd_open_verb()
void NACT_Sys3::cmd_open_obj(int verb)
{
// 目的語メニューの表示
// 目的語メニューの表示
verb_obj = false;
// 表示する目的語のチェック
// 表示する目的語のチェック
int chk[MAX_OBJ], addr[MAX_OBJ], page = 0;
memset(chk, 0, sizeof(chk));
@@ -383,16 +383,16 @@ void NACT_Sys3::cmd_open_obj(int verb)
addr[menu_obj[i]] = menu_addr[i];
}
}
// 目的語がない場合
// 目的語がない場合
if(chk[0]) {
scenario_addr = addr[0];
return;
}
// 以後、obj=0は戻るとして扱う
// 以後、obj=0は戻るとして扱う
chk[0] = 0;
addr[0] = scenario_data[0] | (scenario_data[1] << 8);
// メニュー項目の準備
// メニュー項目の準備
int id[32], index = 0;
ags->clear_menu_window();
@@ -408,10 +408,10 @@ void NACT_Sys3::cmd_open_obj(int verb)
ags->menu_dest_y += ags->menu_font_size + 2;
}
}
// 戻るを追加
// 戻るを追加
ags->menu_dest_x = 2;
ags->menu_dest_y += 2;
ags->draw_text("戻る");
ags->draw_text("戻る");
id[index++] = 0;
ags->menu_dest_y += ags->menu_font_size + 2;
ags->draw_menu = false;
@@ -438,12 +438,12 @@ void NACT_Sys3::cmd_a()
#endif
if(!text_skip_enb) {
// Pushマークの表示
// Pushマークの表示
if(show_push) {
ags->draw_push(text_window);
}
// キーが押されて離されるまで待機
// キーが押されて離されるまで待機
for(;;) {
if(terminate) {
return;
@@ -465,7 +465,7 @@ void NACT_Sys3::cmd_a()
}
}
// ウィンドウ更新
// ウィンドウ更新
ags->clear_text_window(text_window, true);
}
@@ -486,7 +486,7 @@ void NACT_Sys3::cmd_b()
#endif
if(cmd == 1) {
// あゆみちゃん物語
// あゆみちゃん物語
if(crc32 == CRC32_AYUMI_CD || crc32 == CRC32_AYUMI_JISSHA_256 || crc32 == CRC32_AYUMI_JISSHA_FULL) {
p5 = 1;
}
@@ -497,7 +497,7 @@ void NACT_Sys3::cmd_b()
ags->menu_w[index - 1].ey = p4;
ags->menu_w[index - 1].push = p5 ? true : false;
// 退避画面の破棄
// 退避画面の破棄
if(ags->menu_w[index - 1].screen) {
free(ags->menu_w[index - 1].screen);
ags->menu_w[index - 1].screen = NULL;
@@ -512,21 +512,21 @@ void NACT_Sys3::cmd_b()
ags->text_w[index - 1].ey = p4;
ags->text_w[index - 1].push = p5 ? true : false;
// 退避画面の破棄
// 退避画面の破棄
if(ags->text_w[index - 1].screen) {
free(ags->text_w[index - 1].screen);
ags->text_w[index - 1].screen = NULL;
}
// 退避窓の破棄
// 退避窓の破棄
if(ags->text_w[index - 1].window) {
free(ags->text_w[index - 1].window);
ags->text_w[index - 1].window = NULL;
}
} else if(cmd == 4) {
if(p5 == 0) {
// ウィンドウ退避
// ウィンドウ退避
if(crc32 == CRC32_PROSTUDENTG_CD && p4) {
// prostudent G オープニング画面化け対策
// prostudent G オープニング画面化け対策
if(ags->text_w[index - 1].window) {
free(ags->text_w[index - 1].window);
ags->text_w[index - 1].window = NULL;
@@ -536,7 +536,7 @@ void NACT_Sys3::cmd_b()
ags->open_text_window(index, p4 ? false : true);
text_window = index;
} else {
// ウィンドウ復帰
// ウィンドウ復帰
ags->close_text_window(index, text_window == index ? true : false);
}
}
@@ -544,7 +544,7 @@ void NACT_Sys3::cmd_b()
void NACT_Sys3::cmd_d()
{
// 未使用
// 未使用
}
void NACT_Sys3::cmd_e()
@@ -604,12 +604,12 @@ void NACT_Sys3::cmd_h()
output_console(log);
#endif
// 隠しコマンド?
// 隠しコマンド?
if(length >= 9) {
return;
}
// 8桁の文字列を生成
// 8桁の文字列を生成
char tmp[8];
tmp[0] = '0';
tmp[1] = '0';
@@ -626,7 +626,7 @@ void NACT_Sys3::cmd_h()
tmp[i] = ' ';
}
// 指定した桁数だけ出力
// 指定した桁数だけ出力
char string[9];
int p = 0;
if(length == 0) {
@@ -659,7 +659,7 @@ void NACT_Sys3::cmd_i()
output_console(log);
#endif
// X方向はカラム単位で切り捨て
// X方向はカラム単位で切り捨て
sx = column ? sx * 8 : sx & 0xfff8;
ex = column ? ex * 8 - 1 : (crc32 == CRC32_NINGYO) ? (ex & 0xfff8) + 7 : (ex & 0xfff8) - 1;
dx = column ? dx * 8 : dx & 0xfff8;
@@ -677,7 +677,7 @@ void NACT_Sys3::cmd_j()
output_console(log);
#endif
// x方向はカラム単位で切り捨て
// x方向はカラム単位で切り捨て
ags->cg_dest_x = column ? x * 8 : x & 0xfff8;
ags->cg_dest_y = y;
ags->set_cg_dest = true;
@@ -693,17 +693,17 @@ void NACT_Sys3::cmd_k()
output_console(log);
#endif
// K6の場合は、すぐに返る
// K6の場合は、すぐに返る
if(cmd == 6) {
RND = get_key();
return;
}
// マウスの初期取得
// マウスの初期取得
int mx, my;
get_cursor(&mx, &my);
// キーが押されるまで待機
// キーが押されるまで待機
for(;;) {
if(terminate) {
return;
@@ -712,7 +712,7 @@ void NACT_Sys3::cmd_k()
break;
}
if(1 <= cmd && cmd <= 3) {
// マウス対応
// マウス対応
int x, y, dx, dy;
get_cursor(&x, &y);
dx = (x < mx) ? mx - x : x - mx;
@@ -740,7 +740,7 @@ void NACT_Sys3::cmd_k()
RND = val;
}
// キーが離されるまで待機
// キーが離されるまで待機
if(cmd != 1) {
SDL_Delay(100);
for(;;) {
@@ -754,7 +754,7 @@ void NACT_Sys3::cmd_k()
}
}
// K0の場合は改行
// K0の場合は改行
if(cmd == 0) {
cmd_r();
}
@@ -771,7 +771,7 @@ void NACT_Sys3::cmd_l()
#endif
if(index == 0) {
// 特殊セーブ
// 特殊セーブ
FILEIO* fio = new FILEIO();
if(fio->Fopen("ASLEEP.DAT", FILEIO_READ_BINARY | FILEIO_SAVEDATA)) {
// U01 - U20
@@ -1029,7 +1029,7 @@ void NACT_Sys3::cmd_q()
{
static char header[112] = {
#if 0
// 夢幻泡影についてきたASLEEP_A.DATのヘッダ
// 夢幻泡影についてきたASLEEP_A.DATのヘッダ
'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 's', 'a', 'v', 'e', ' ', 'd', 'a', 't',
'a', ' ', 'f', 'o', 'r', ' ', 'S', 'y', 's', 't', 'e', 'm', '3', ' ', ' ', 'U',
'n', 'i', 'o', 'n', ' ', '[', 'P', 'C', '9', '8', '0', '1', ':', 'F', 'M', 'T',
@@ -1038,7 +1038,7 @@ void NACT_Sys3::cmd_q()
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '(', 'C', ')', '1', '9', '9',
'4', ' ', 'A', 'L', 'I', 'C', 'E', '-', 'S', 'O', 'F', 'T', ' ', ' ', ' ', ' '
#else
// 偽ヘッダ
// 偽ヘッダ
'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 's', 'a', 'v', 'e', ' ', 'd', 'a', 't',
'a', ' ', 'f', 'o', 'r', ' ', 'S', 'y', 's', 't', 'e', 'm', '3', ' ', ' ', 'U',
'n', 'i', 'o', 'n', ' ', '[', 'W', 'i', 'n', '9', 'x', '/', 'N', 'T', '4', '0',
@@ -1058,7 +1058,7 @@ void NACT_Sys3::cmd_q()
#endif
if(index == 0) {
// 特殊セーブ
// 特殊セーブ
FILEIO* fio = new FILEIO();
if(fio->Fopen("ASLEEP.DAT", FILEIO_WRITE_BINARY | FILEIO_SAVEDATA)) {
// U01 - U20
@@ -1155,7 +1155,7 @@ void NACT_Sys3::cmd_r()
output_console(log);
#endif
// ウィンドウの表示範囲外の場合は改ページ
// ウィンドウの表示範囲外の場合は改ページ
if(ags->return_text_line(text_window)) {
cmd_a();
}
@@ -1189,7 +1189,7 @@ void NACT_Sys3::cmd_t()
output_console(log);
#endif
// x方向はカラム単位で切り捨て
// x方向はカラム単位で切り捨て
ags->text_dest_x = column ? x * 8 : x & 0xfff8;
ags->text_dest_y = y;
}
@@ -1454,7 +1454,7 @@ void NACT_Sys3::cmd_y()
M_X = (x < 0) ? x : (x > 639) ? 639 : x;
M_Y = (y < 0) ? 0 : (y > 479) ? 479 : y;
if((RND = get_key())) {
// キー入力があった場合は、離すまで待機
// キー入力があった場合は、離すまで待機
for(;;) {
if(terminate) {
return;
@@ -1523,8 +1523,8 @@ void NACT_Sys3::cmd_y()
RND = mako->check_pcm() ? 1 : 0;
break;
case 106:
// 乙女戦記で使用している謎のコマンド
// 多分PCM関連
// 乙女戦記で使用している謎のコマンド
// 多分PCM関連
break;
case 221:
case 222:
@@ -1628,7 +1628,7 @@ void NACT_Sys3::cmd_y()
path[2] = '\\';
path[3] = '\0';
UINT t = GetDriveType(path);
// フロッピーから起動した場合は0が返る
// フロッピーから起動した場合は0が返る
//RND = (t == DRIVE_REMOVABLE) ? 0 : (t == DRIVE_CDROM) ? 2 : 1;
RND = (t == DRIVE_CDROM) ? 2 : 1;
#else
@@ -1688,7 +1688,7 @@ void NACT_Sys3::cmd_z()
}
// 下位関数
// 下位関数
uint16 NACT_Sys3::cali()
{
+1 -1
View File
@@ -20,7 +20,7 @@ static INT_PTR CALLBACK TextDialogProc(HWND hDlg, UINT msg, WPARAM wParam, LPARA
// get this pointer
nact = (NACT *)lParam;
// init dialog
sprintf_s(string, 64, "文字列を入力してください(最大%d文字)", nact->tvar_maxlen);
sprintf_s(string, 64, "文字列を入力してください(最大%d文字)", nact->tvar_maxlen);
Edit_SetText(GetDlgItem(hDlg, IDC_TEXT), string);
Edit_SetText(GetDlgItem(hDlg, IDC_EDITBOX), nact->tvar[nact->tvar_index - 1]);
if(nact->tvar[nact->tvar_index - 1][0] == '\0') {