yui 2015-11-22 13:20:53 +00:00
parent 2ceaf0244c
commit f219f1254a
10 changed files with 159 additions and 160 deletions

View File

@ -23,7 +23,7 @@ void IOOUTCALL opm_o(UINT port, REG8 dat) {
sndboard.opmdat[reg] = dat;
x1f_opm(reg, dat);
#if !defined(DISABLE_SOUND)
opmgen_setreg(reg, dat);
opmgen_setreg(&g_opmgen, reg, dat);
#endif
}
else if ((lsb & (~3)) == 0x04) { /* 0704-0707 */
@ -113,7 +113,7 @@ void sndboard_update(void) {
}
#if defined(SUPPORT_TURBOZ) || defined(SUPPORT_OPM)
for (i=0x20; i<0x100; i++) {
opmgen_setreg((REG8)i, sndboard.opmdat[i]);
opmgen_setreg(&g_opmgen, (REG8)i, sndboard.opmdat[i]);
}
#endif
}

View File

@ -61,13 +61,6 @@ typedef signed int SINT32;
#define SOUND_CRITICAL
#define SOUNDRESERVE 100
#define SUPPORT_CRT15KHZ
#define SUPPORT_HOSTDRV
#define SUPPORT_SWSEEKSND
#define SUPPORT_SASI
#define SUPPORT_SCSI
// #define SUPPORT_ARC
// #define SUPPORT_ZLIB
#define SUPPORT_OPM
#define SCREEN_BPP 16

View File

@ -103,6 +103,7 @@ typedef struct {
SINT32 outdr;
SINT32 calcremain;
UINT8 keyreg[OPMCH_MAX];
OPMCH opmch[OPMCH_MAX];
} _OPMGEN, *OPMGEN;
typedef struct {
@ -121,10 +122,10 @@ extern "C" {
void opmgen_initialize(UINT rate);
void opmgen_setvol(UINT vol);
void opmgen_reset(void);
void opmgen_setreg(REG8 reg, REG8 value);
void opmgen_reset(OPMGEN opmgen);
void opmgen_setreg(OPMGEN opmgen, REG8 reg, REG8 value);
void SOUNDCALL opmgen_getpcm(void *hdl, SINT32 *pcm, UINT count);
void SOUNDCALL opmgen_getpcm(OPMGEN opmgen, SINT32 *pcm, UINT count);
#ifdef __cplusplus
}

View File

@ -1,12 +1,15 @@
#include "compiler.h"
/**
* @file opmgenc.c
* @brief Implementation of the OPM generator
*/
#if defined(SUPPORT_TURBOZ) || defined(SUPPORT_OPM)
#include "compiler.h"
#ifndef PALMOS
#include <math.h>
#ifndef PALMOS
#include <math.h>
#endif
#include "sound.h"
#include "sndctrl.h"
#include "sound.h"
#include "opmgen.h"
#define OPM_ARRATE 399128L
@ -131,13 +134,13 @@ void opmgen_setvol(UINT vol) {
/* ---- */
static void keyon(OPMCH *ch, REG8 value) {
static void keyon(OPMGEN opmgen, OPMCH *ch, REG8 value) {
OPMSLOT *slot;
REG8 bit;
UINT i;
opmgen.playing++;
opmgen->playing++;
ch->playing |= (value >> 3) & 0x0f;
slot = ch->slot;
bit = 0x08;
@ -170,7 +173,7 @@ static void keyon(OPMCH *ch, REG8 value) {
}
}
static void set_algorithm(OPMCH *ch, REG8 value) {
static void set_algorithm(OPMGEN opmgen, OPMCH *ch, REG8 value) {
UINT8 feed;
SINT32 *outd;
@ -188,55 +191,55 @@ static void set_algorithm(OPMCH *ch, REG8 value) {
switch ((value >> 6) & 3) {
case 0:
default:
outd = &opmgen.feedback4;
outd = &opmgen->feedback4;
break;
case 1:
outd = &opmgen.outdl;
outd = &opmgen->outdl;
break;
case 2:
outd = &opmgen.outdr;
outd = &opmgen->outdr;
break;
case 3:
outd = &opmgen.outdc;
outd = &opmgen->outdc;
break;
}
switch(value & 7) {
case 0:
ch->connect1 = &opmgen.feedback2;
ch->connect2 = &opmgen.feedback3;
ch->connect3 = &opmgen.feedback4;
ch->connect1 = &opmgen->feedback2;
ch->connect2 = &opmgen->feedback3;
ch->connect3 = &opmgen->feedback4;
outslot = 0x08;
break;
case 1:
ch->connect1 = &opmgen.feedback3;
ch->connect2 = &opmgen.feedback3;
ch->connect3 = &opmgen.feedback4;
ch->connect1 = &opmgen->feedback3;
ch->connect2 = &opmgen->feedback3;
ch->connect3 = &opmgen->feedback4;
outslot = 0x08;
break;
case 2:
ch->connect1 = &opmgen.feedback4;
ch->connect2 = &opmgen.feedback3;
ch->connect3 = &opmgen.feedback4;
ch->connect1 = &opmgen->feedback4;
ch->connect2 = &opmgen->feedback3;
ch->connect3 = &opmgen->feedback4;
outslot = 0x08;
break;
case 3:
ch->connect1 = &opmgen.feedback2;
ch->connect2 = &opmgen.feedback4;
ch->connect3 = &opmgen.feedback4;
ch->connect1 = &opmgen->feedback2;
ch->connect2 = &opmgen->feedback4;
ch->connect3 = &opmgen->feedback4;
outslot = 0x08;
break;
case 4:
ch->connect1 = &opmgen.feedback2;
ch->connect1 = &opmgen->feedback2;
ch->connect2 = outd;
ch->connect3 = &opmgen.feedback4;
ch->connect3 = &opmgen->feedback4;
outslot = 0x0a;
break;
@ -248,7 +251,7 @@ static void set_algorithm(OPMCH *ch, REG8 value) {
break;
case 6:
ch->connect1 = &opmgen.feedback2;
ch->connect1 = &opmgen->feedback2;
ch->connect2 = outd;
ch->connect3 = outd;
outslot = 0x0e;
@ -354,15 +357,15 @@ static void channelupdate(OPMCH *ch) {
/*----------------------------------------------------------------------------- */
void opmgen_reset(void) {
void opmgen_reset(OPMGEN opmgen) {
OPMCH *ch;
UINT i;
OPMSLOT *slot;
UINT j;
opmgen.mode = 0;
ch = opmch;
opmgen->mode = 0;
ch = opmgen->opmch;
for(i=0; i<OPMCH_MAX; i++) {
ch->keynote = 0;
slot = ch->slot;
@ -381,11 +384,11 @@ void opmgen_reset(void) {
ch++;
}
for (i=0x20; i<0x100; i++) {
opmgen_setreg((REG8)i, 0);
opmgen_setreg(opmgen, (REG8)i, 0);
}
}
void opmgen_setreg(REG8 reg, REG8 value) {
void opmgen_setreg(OPMGEN opmgen, REG8 reg, REG8 value) {
UINT c;
UINT i;
@ -394,20 +397,20 @@ void opmgen_setreg(REG8 reg, REG8 value) {
sound_sync();
c = reg & 7;
ch = opmch + c;
ch = opmgen->opmch + c;
slot = ch->slot + fmslot[(reg >> 3) & 3];
switch(reg & 0xe0) {
case 0x00:
switch(reg) {
case 0x08: /* key on/off */
keyon(opmch + (value & 7), value);
keyon(opmgen, opmgen->opmch + (value & 7), value);
break;
case 0x14: /* mode */
opmgen.mode = value;
opmgen->mode = value;
if ((value & 0x81) == 0x81) {
opmgen.playing++;
ch = opmch;
opmgen->playing++;
ch = opmgen->opmch;
for (c=0; c<8; c++) {
ch->playing = 0x0f;
ch->op1fb = 0;
@ -430,7 +433,7 @@ void opmgen_setreg(REG8 reg, REG8 value) {
case 0x20:
switch(reg & 0x18) {
case 0x00: /* pan feedback connection */
set_algorithm(ch, value);
set_algorithm(opmgen, ch, value);
break;
case 0x08: /* keycode */
@ -478,5 +481,3 @@ void opmgen_setreg(REG8 reg, REG8 value) {
}
}
#endif

View File

@ -1,9 +1,11 @@
#include "compiler.h"
/**
* @file opmgeng.c
* @brief Implementation of the OPM generator
*/
#if defined(SUPPORT_TURBOZ) || defined(SUPPORT_OPM)
#include "sound.h"
#include "sndctrl.h"
#include "compiler.h"
#include "sound.h"
#include "opmgen.h"
extern OPMCFG opmcfg;
@ -43,14 +45,14 @@ extern OPMCFG opmcfg;
opmcfg.envtable[(e)]) >> (ENVTBL_BIT+SINTBL_BIT-TL_BITS))
static void calcratechannel(OPMCH *ch) {
static void calcratechannel(OPMGEN opmgen, OPMCH *ch) {
SINT32 envout;
SINT32 opout;
opmgen.feedback2 = 0;
opmgen.feedback3 = 0;
opmgen.feedback4 = 0;
opmgen->feedback2 = 0;
opmgen->feedback3 = 0;
opmgen->feedback4 = 0;
/* SLOT 1 */
CALCENV(envout, ch, 0);
@ -68,7 +70,7 @@ static void calcratechannel(OPMCH *ch) {
}
/* output slot1 */
if (!ch->connect1) {
opmgen.feedback2 = opmgen.feedback3 = opmgen.feedback4 = opout;
opmgen->feedback2 = opmgen->feedback3 = opmgen->feedback4 = opout;
}
else {
*ch->connect1 += opout;
@ -77,21 +79,21 @@ static void calcratechannel(OPMCH *ch) {
/* SLOT 2 */
CALCENV(envout, ch, 1);
if (envout > 0) {
*ch->connect2 += SLOTOUT(ch->slot[1], envout, opmgen.feedback2);
*ch->connect2 += SLOTOUT(ch->slot[1], envout, opmgen->feedback2);
}
/* SLOT 3 */
CALCENV(envout, ch, 2);
if (envout > 0) {
*ch->connect3 += SLOTOUT(ch->slot[2], envout, opmgen.feedback3);
*ch->connect3 += SLOTOUT(ch->slot[2], envout, opmgen->feedback3);
}
/* SLOT 4 */
CALCENV(envout, ch, 3);
if (envout > 0) {
*ch->connect4 += SLOTOUT(ch->slot[3], envout, opmgen.feedback4);
*ch->connect4 += SLOTOUT(ch->slot[3], envout, opmgen->feedback4);
}
}
void SOUNDCALL opmgen_getpcm(void *hdl, SINT32 *pcm, UINT count) {
void SOUNDCALL opmgen_getpcm(OPMGEN opmgen, SINT32 *pcm, UINT count) {
OPMCH *ch;
UINT i;
@ -99,53 +101,51 @@ void SOUNDCALL opmgen_getpcm(void *hdl, SINT32 *pcm, UINT count) {
SINT32 samp_l;
SINT32 samp_r;
if ((!opmgen.playing) || (!count)) {
if ((!opmgen->playing) || (!count)) {
return;
}
ch = opmch;
ch = opmgen->opmch;
do {
samp_l = opmgen.outdl * (opmgen.calcremain * -1);
samp_r = opmgen.outdr * (opmgen.calcremain * -1);
opmgen.calcremain += FMDIV_ENT;
samp_l = opmgen->outdl * (opmgen->calcremain * -1);
samp_r = opmgen->outdr * (opmgen->calcremain * -1);
opmgen->calcremain += FMDIV_ENT;
while(1) {
opmgen.outdc = 0;
opmgen.outdl = 0;
opmgen.outdr = 0;
opmgen->outdc = 0;
opmgen->outdl = 0;
opmgen->outdr = 0;
playing = 0;
for (i=0; i<OPMCH_MAX; i++) {
if (ch[i].playing & ch[i].outslot) {
calcratechannel(ch + i);
calcratechannel(opmgen, ch + i);
playing++;
}
}
opmgen.outdl += opmgen.outdc;
opmgen.outdr += opmgen.outdc;
opmgen.outdl >>= FMVOL_SFTBIT;
opmgen.outdr >>= FMVOL_SFTBIT;
if (opmgen.calcremain > opmcfg.calc1024) {
samp_l += opmgen.outdl * opmcfg.calc1024;
samp_r += opmgen.outdr * opmcfg.calc1024;
opmgen.calcremain -= opmcfg.calc1024;
opmgen->outdl += opmgen->outdc;
opmgen->outdr += opmgen->outdc;
opmgen->outdl >>= FMVOL_SFTBIT;
opmgen->outdr >>= FMVOL_SFTBIT;
if (opmgen->calcremain > opmcfg.calc1024) {
samp_l += opmgen->outdl * opmcfg.calc1024;
samp_r += opmgen->outdr * opmcfg.calc1024;
opmgen->calcremain -= opmcfg.calc1024;
}
else {
break;
}
}
samp_l += opmgen.outdl * opmgen.calcremain;
samp_l += opmgen->outdl * opmgen->calcremain;
samp_l >>= 8;
samp_l *= opmcfg.fmvol;
samp_l >>= (OPM_OUTSB + FMDIV_BITS + 1 + 6 - FMVOL_SFTBIT - 8);
pcm[0] += samp_l;
samp_r += opmgen.outdr * opmgen.calcremain;
samp_r += opmgen->outdr * opmgen->calcremain;
samp_r >>= 8;
samp_r *= opmcfg.fmvol;
samp_r >>= (OPM_OUTSB + FMDIV_BITS + 1 + 6 - FMVOL_SFTBIT - 8);
pcm[1] += samp_r;
opmgen.calcremain -= opmcfg.calc1024;
opmgen->calcremain -= opmcfg.calc1024;
pcm += 2;
} while(--count);
opmgen.playing = playing;
(void)hdl;
opmgen->playing = playing;
}
#endif

View File

@ -7,8 +7,7 @@
#if defined(SUPPORT_TURBOZ) || defined(SUPPORT_OPM)
OPMCH opmch[OPMCH_MAX];
_OPMGEN opmgen;
_OPMGEN g_opmgen;
#endif
_PSGGEN psggen;
@ -36,8 +35,8 @@ void sndctrl_deinitialize(void) {
void sndctrl_reset(void) {
#if defined(SUPPORT_TURBOZ) || defined(SUPPORT_OPM)
opmgen_reset();
sound_streamregist(&opmgen, (SOUNDCB)opmgen_getpcm);
opmgen_reset(&g_opmgen);
sound_streamregist(&g_opmgen, (SOUNDCB)opmgen_getpcm);
#endif
psggen_reset(&psggen);
sound_streamregist(&psggen, (SOUNDCB)psggen_getpcm);

View File

@ -9,8 +9,7 @@ extern "C" {
#endif
#if defined(SUPPORT_TURBOZ) || defined(SUPPORT_OPM)
extern OPMCH opmch[OPMCH_MAX];
extern _OPMGEN opmgen;
extern _OPMGEN g_opmgen;
#endif
extern _PSGGEN psggen;

View File

@ -32,7 +32,7 @@ void IOOUTCALL opm_o(UINT port, REG8 dat) {
juliet_YM2151W(reg, dat);
}
else {
opmgen_setreg(reg, dat);
opmgen_setreg(&g_opmgen, reg, dat);
}
#endif
}
@ -139,7 +139,7 @@ void sndboard_update(void) {
}
#if defined(SUPPORT_TURBOZ) || defined(SUPPORT_OPM)
for (i=0x20; i<0x100; i++) {
opmgen_setreg((REG8)i, sndboard.opmdat[i]);
opmgen_setreg(&g_opmgen, (REG8)i, sndboard.opmdat[i]);
}
#endif
}

View File

@ -87,6 +87,7 @@ EM_OFF equ 0
.outdr resd 1
.calcremain resd 1
.keyreg resb OPMCH_MAX
.opmch resb 0
endstruc
struc opmcfg_t
@ -101,8 +102,8 @@ EM_OFF equ 0
section .text
extern _opmgen
extern _opmch
; extern _opmgen
; extern _opmch
extern _opmcfg
; extern _sinshift
@ -166,7 +167,7 @@ ENVTABLE equ (_opmcfg + opmcfg_t.envtable)
%%setrr: mov byte [edi + slot_t.env_mode], EM_OFF
%%setd2: mov dword [edi + slot_t.env_end], EC_OFF + 1
and dword [edi + slot_t.env_inc], byte 0
and byte [esi + ch_t.playing], ~(%3)
and byte [edi - (slot_t_size * %3) + ch_t.playing], ~(1 << %3)
mov eax, EC_OFF
jmp near %2
%endmacro
@ -176,7 +177,7 @@ ENVTABLE equ (_opmcfg + opmcfg_t.envtable)
@opmgen_getpcm@12:
cmp dword [esp+4], byte 0
je near og_noupdate
cmp dword [_opmgen + opmgen_t.playing], byte 0
cmp dword [ecx + opmgen_t.playing], byte 0
je near og_noupdate
push ebx
@ -189,100 +190,101 @@ OPN_SAMPL equ 0
OPN_SAMPR equ 4
OPN_LENG equ 16 + 8 + 4
mov esi, ecx
mov ebp, edx
mov ebx, [_opmgen + opmgen_t.calcremain]
mov ebx, [esi + opmgen_t.calcremain]
og_fmout_st: mov eax, ebx
imul ebx, [_opmgen + opmgen_t.outdl]
imul ebx, [esi + opmgen_t.outdl]
mov [esp + OPN_SAMPL], ebx
mov ebx, FMDIV_ENT
sub ebx, eax
imul eax, [_opmgen + opmgen_t.outdr]
imul eax, [esi + opmgen_t.outdr]
mov [esp + OPN_SAMPR], eax
og_fmout_lp: mov [_opmgen + opmgen_t.calcremain], ebx
and dword [_opmgen + opmgen_t.playing], byte 0
and dword [_opmgen + opmgen_t.outdl], byte 0
and dword [_opmgen + opmgen_t.outdc], byte 0
and dword [_opmgen + opmgen_t.outdr], byte 0
og_fmout_lp: mov [esi + opmgen_t.calcremain], ebx
and dword [esi + opmgen_t.playing], byte 0
and dword [esi + opmgen_t.outdl], byte 0
and dword [esi + opmgen_t.outdc], byte 0
and dword [esi + opmgen_t.outdr], byte 0
mov ch, OPMCH_MAX
mov esi, _opmch
og_calcch_lp: mov cl, [esi + ch_t.outslot]
test cl, [esi + ch_t.playing]
lea edi, [esi + opmgen_t.opmch]
og_calcch_lp: mov cl, [edi + ch_t.outslot]
test cl, [edi + ch_t.playing]
je near og_calcch_nt
and dword [_opmgen + opmgen_t.feedback2], byte 0
and dword [_opmgen + opmgen_t.feedback3], byte 0
and dword [_opmgen + opmgen_t.feedback4], byte 0
mov edi, esi
and dword [esi + opmgen_t.feedback2], byte 0
and dword [esi + opmgen_t.feedback3], byte 0
and dword [esi + opmgen_t.feedback4], byte 0
calcenv envcalc1, envret1 ; slot1 calculate
jl near og_calcslot3
mov cl, [esi + ch_t.feedback]
mov cl, [edi + ch_t.feedback]
test cl, cl
je short og_nofeed
mov eax, [esi + ch_t.op1fb] ; with feedback
mov eax, [edi + ch_t.op1fb] ; with feedback
mov ebx, eax
shr eax, cl
op_out
mov [esi + ch_t.op1fb], eax
mov [edi + ch_t.op1fb], eax
add eax, ebx
sar eax, 1
jmp short og_algchk
og_nofeed: xor eax, eax ; without feedback
op_out
og_algchk: cmp byte [esi + ch_t.algorithm], 5
og_algchk: cmp byte [edi + ch_t.algorithm], 5
jne short og_calcalg5
mov [_opmgen + opmgen_t.feedback2], eax ; case ALG == 5
mov [_opmgen + opmgen_t.feedback3], eax
mov [_opmgen + opmgen_t.feedback4], eax
mov [esi + opmgen_t.feedback2], eax ; case ALG == 5
mov [esi + opmgen_t.feedback3], eax
mov [esi + opmgen_t.feedback4], eax
jmp short og_calcslot3
og_calcalg5: mov ebx, [esi + ch_t.connect1] ; case ALG != 5
og_calcalg5: mov ebx, [edi + ch_t.connect1] ; case ALG != 5
add [ebx], eax
og_calcslot3: add edi, byte slot_t_size ; slot3 calculate
calcenv envcalc2, envret2
jl short og_calcslot2
mov eax, [_opmgen + opmgen_t.feedback2]
mov eax, [esi + opmgen_t.feedback2]
op_out
mov ebx, [esi + ch_t.connect2]
mov ebx, [edi - (slot_t_size * 1) + ch_t.connect2]
add [ebx], eax
og_calcslot2: add edi, byte slot_t_size ; slot2 calculate
calcenv envcalc3, envret3
jl short og_calcslot4
mov eax, [_opmgen + opmgen_t.feedback3]
mov eax, [esi + opmgen_t.feedback3]
op_out
mov ebx, [esi + ch_t.connect3]
mov ebx, [edi - (slot_t_size * 2) + ch_t.connect3]
add [ebx], eax
og_calcslot4: add edi, byte slot_t_size ; slot4 calculate
calcenv envcalc4, envret4
jl short og_calcsloted
mov eax, [_opmgen + opmgen_t.feedback4]
mov eax, [esi + opmgen_t.feedback4]
op_out
mov ebx, [esi + ch_t.connect4]
mov ebx, [edi - (slot_t_size * 3) + ch_t.connect4]
add [ebx], eax
og_calcsloted: inc dword [_opmgen + opmgen_t.playing]
og_calcch_nt: add esi, ch_t_size
og_calcsloted: sub edi, (slot_t_size * 3)
inc dword [esi + opmgen_t.playing]
og_calcch_nt: add edi, ch_t_size
dec ch
jne near og_calcch_lp
mov eax, [_opmgen + opmgen_t.outdc]
add [_opmgen + opmgen_t.outdl], eax
add [_opmgen + opmgen_t.outdr], eax
sar dword [_opmgen + opmgen_t.outdl], FMVOL_SFTBIT
sar dword [_opmgen + opmgen_t.outdr], FMVOL_SFTBIT
mov eax, [esi + opmgen_t.outdc]
add [esi + opmgen_t.outdl], eax
add [esi + opmgen_t.outdr], eax
sar dword [esi + opmgen_t.outdl], FMVOL_SFTBIT
sar dword [esi + opmgen_t.outdr], FMVOL_SFTBIT
mov edx, [_opmcfg + opmcfg_t.calc1024]
mov ebx, [_opmgen + opmgen_t.calcremain]
mov ebx, [esi + opmgen_t.calcremain]
mov eax, ebx
sub ebx, edx
jbe short og_nextsamp
mov [_opmgen + opmgen_t.calcremain], ebx
mov [esi + opmgen_t.calcremain], ebx
mov eax, edx
imul eax, [_opmgen + opmgen_t.outdl]
imul eax, [esi + opmgen_t.outdl]
add [esp + OPN_SAMPL], eax
imul edx, [_opmgen + opmgen_t.outdr]
imul edx, [esi + opmgen_t.outdr]
add [esp + OPN_SAMPR], edx
jmp near og_fmout_lp
og_nextsamp: neg ebx
mov [_opmgen + opmgen_t.calcremain], ebx
mov [esi + opmgen_t.calcremain], ebx
mov edx, eax
mov ecx, [_opmcfg + opmcfg_t.fmvol]
imul eax, [_opmgen + opmgen_t.outdl]
imul edx, [_opmgen + opmgen_t.outdr]
imul eax, [esi + opmgen_t.outdl]
imul edx, [esi + opmgen_t.outdr]
add eax, [esp + OPN_SAMPL]
add edx, [esp + OPN_SAMPR]
sar eax, 8
@ -303,8 +305,8 @@ og_nextsamp: neg ebx
pop ebx
og_noupdate: ret 4
setenv envcalc1, envret1, 1
setenv envcalc2, envret2, 2
setenv envcalc3, envret3, 4
setenv envcalc4, envret4, 8
setenv envcalc1, envret1, 0
setenv envcalc2, envret2, 1
setenv envcalc3, envret3, 2
setenv envcalc4, envret4, 3

View File

@ -712,18 +712,22 @@ SOURCE=..\VRAM\VRAM.C
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\SOUND\OPMGENC.C
SOURCE=..\sound\opmgen.h
# End Source File
# Begin Source File
SOURCE=.\x86\OPMGENG.X86
SOURCE=..\sound\opmgenc.c
# End Source File
# Begin Source File
SOURCE=.\x86\opmgeng.x86
!IF "$(CFG)" == "xmil - Win32 Release JP"
# Begin Custom Build - 本萏拶拞... $(InputPath)
IntDir=.\..\obj\vc\win9xreljp
InputPath=.\x86\OPMGENG.X86
InputName=OPMGENG
InputPath=.\x86\opmgeng.x86
InputName=opmgeng
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
nasm -f win32 $(InputPath) -o $(IntDir)\$(InputName).obj
@ -734,8 +738,8 @@ InputName=OPMGENG
# Begin Custom Build - 本萏拶拞... $(InputPath)
IntDir=.\..\obj\vc\win9xrelworld
InputPath=.\x86\OPMGENG.X86
InputName=OPMGENG
InputPath=.\x86\opmgeng.x86
InputName=opmgeng
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
nasm -f win32 $(InputPath) -o $(IntDir)\$(InputName).obj
@ -746,8 +750,8 @@ InputName=OPMGENG
# Begin Custom Build - 本萏拶拞... $(InputPath)
IntDir=.\..\obj\vc\win9xtrc
InputPath=.\x86\OPMGENG.X86
InputName=OPMGENG
InputPath=.\x86\opmgeng.x86
InputName=opmgeng
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
nasm -f win32 $(InputPath) -o $(IntDir)\$(InputName).obj
@ -758,8 +762,8 @@ InputName=OPMGENG
# Begin Custom Build - 本萏拶拞... $(InputPath)
IntDir=.\..\obj\vc\win9xdbg
InputPath=.\x86\OPMGENG.X86
InputName=OPMGENG
InputPath=.\x86\opmgeng.x86
InputName=opmgeng
"$(IntDir)\$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
nasm -f win32 $(InputPath) -o $(IntDir)\$(InputName).obj