Oct 22, 2020
NP2kai is PC-9801 series emulator
for Windows/Linux/macOS
- MSYS2 64bit + 64bit console(Windows).
- Install compiler, etc.
- Change directory to sdl.
$ cd NP2kai/sdl
- Make.
$ make
- Install shared library(.dll or .so or .dylib) to libretro's cores directory (libretro/cores).
- Locate BIOS files to np2kai in libretro's system directory (libretro/system/np2kai).
for Android/iOS
- MSYS2 64bit + 64bit console(Windows).
- Install Android Studio, and NDK. And PATH there.
- Clone libretro-super.
$ git clone --depth 1 https://github.com/libretro/libretro-super.git
- Change directory to libretro-super.
$ cd libretro-super
- Fetch np2kai.
$ ./libretro-fetsh.sh np2kai
- Build.
- Android
$ ./libretro-build-android-mk.sh np2kai
- iOS
$ ./libretro-build-ios.sh np2kai
- Install shared library(.so or .dylib) to libretro's cores directory (libretro/cores).
- Locate BIOS files to np2kai in libretro's system directory (libretro/system/np2kai).
NP2 menu is shown F12 or mouse middle button or L2, to swap FDD/HDD diskimages.
On Android, Game Files are need to locate in '/storage/emulated/0/RetroArch' by access rights reason. Game Files cannot locate on external storage.
You should NP2fmgen or NP21/W, maybe.
VisualStudio 2019
- Install VisualStudio 2019.
- Desktop Development with C++
- .NET Framework 4.8 SDK
- C++ ATL
- C++ MFC
- Connecting USB Device
- Windows 10 SDK
- Windows Universal CRT
- Graphics Debugger and GPU Profiler for DirectX
- Developer Analytics Tools
- Git for Windows
- NuGet Package manager
- GitHub extention for Visual Studio
- C++ 2019 redistoributable package
- C++ 2019 redistoributable package updater
- MSBuild
- CMake for Windows
- IntelliCode
- Install vcpkg
- Install packages with vcpkg.
- OpenSSL
- SDL2 SDL2_mixer SDL2_ttf
- libusb
- Install Ninja
- Start VisualStudio 2019 (and without code).
- File -> Open -> CMake -> CMakeLists.txt in NP2kai directory.
- Build -> Build all.
- Output np21kai_windows.exe in out directory.
- CMake options of VisualStudio 2019 port (*=default)
name | value | work | output |
---|---|---|---|
BUILD_I286 | ON | Build i286 | NP2kai_windows |
BUILD_I286 | OFF* | Build IA-32 | NP21kai_windows |
BUILD_HAXM | ON | Build IA-32 HAXM | NP21kai_HAXM_windows |
- Locate .exe file anywhere.
- Locate BIOS files to .exe same filder.
SDL
- MSYS2
- Install MSYS2 64bit.
- Run MSYS2 64bit console.
- Run follow command.
$ pacman -S git cmake make mingw-w64-x86_64-toolchain mingw-w64-x86_64-ntldd mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-SDL mingw-w64-x86_64-SDL_mixer mingw-w64-x86_64-SDL_ttf mingw-w64-x86_64-openssl
- Linux
- Run follow command.
$ sudo apt install git cmake ninja-build build-essential libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libusb-1.0-0-dev libssl-dev
- macOS
- Install XCode and brew.
- Run follow command.
$ sudo brew install cmake ninja sdl sdl_mixer sdl_ttf sdl2 sdl2_mixer sdl2_ttf libusb
- Change directory to NP2kai.
$ cd NP2kai
- Make work directory, and step into there.
$ mkdir build
$ cd build
- Generate Makefile.
$ cmake .. -D BUILD_SDL=ON
- Make.
$ make -j
- CMake options of SDL port (*=default)
name | value | work | output |
---|---|---|---|
BUILD_SDL | ON(*) | Build SDL port | |
USE_SDL2 | ON* | Build with SDL2 | sdlnp21kai |
USE_SDL2 | OFF | Build with SDL | sdlnp21kai_sdl1 |
USE_SDL_MIXER | ON* | Build with SDL_mixer or SDL2_mixer | |
USE_SDL_TTF | ON* | Build with SDL_ttf or SDL2_ttf | |
BUILD_I286 | ON | Build i286 | sdlnp2kai |
BUILD_I286 | OFF* | Build IA-32 | sdlnp21kai |
BUILD_HAXM | ON | Build IA-32 HAXM | sdlnp21kai_HAXM |
- BUILD_SDL=ON default on macOS
- Install.
$ make install
- Locate BIOS files to ~/.config/<SDL NP2kai filename>
- Run SDL NP2kai.
- NP2 menu is shown F11 or mouse middle button, to swap FDD/HDD diskimages.
For the latest release, a package can be found in the AUR
Fonts are NOT included in the AUR package.
temporary
It seems slow xnp2kai's dialog now, on Ubuntu GNOME.
(Maybe GTK issue. No problem on Ubuntu MATE.)
This issue is can aboid with follow command when starting
$ dbus-launch --exit-with-session xnp2kai
X with GTK2 and SDL
- Run follow command.
- Debian/Ubuntu series
$ sudo apt install git cmake ninja-build build-essential libx11-dev libglib2.0-dev libgtk2.0-dev libsdl2-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libusb-1.0-0-dev libfreetype-dev libfontconfig1-dev libssl-dev
- Fedora series
$ sudo dnf groupinstall "Development Tools"
$ sudo dnf install gcc-c++ cmake libusb-devel SDL-devel SDL_mixer-devel SDL_ttf-devel SDL2-devel SDL2_mixer-devel SDL2_ttf-devel gtk2-devel libX11-devel fontconfig-devel freetype-devel
- Change directory to NP2kai.
$ cd NP2kai
- Make work directory, and step in.
$ mkdir build
$ cd build
- Generate Makefile.
$ cmake .. -D BUILD_X=ON
- Make.
$ make -j
- CMake options of X port (*=default)
name | value | work | output |
---|---|---|---|
BUILD_X | ON(*) | Build X port | |
USE_SDL2 | ON* | Build with SDL2 | xnp21kai |
USE_SDL2 | OFF | Build with SDL | xnp21kai_sdl1 |
USE_SDL_MIXER | ON* | Build with SDL_mixer or SDL2_mixer | |
USE_SDL_TTF | ON* | Build with SDL_ttf or SDL2_ttf | |
BUILD_I286 | ON | Build i286 | xnp2kai |
BUILD_I286 | OFF* | Build IA-32 | xnp21kai |
BUILD_HAXM | ON | Build IA-32 HAXM | xnp21kai_HAXM |
- BUILD_X=ON default on UNIX
- Install.
$ sudo make install
- Locate BIOS files to ~/.config/
- Run X NP2kai.
- NP2 menu is shown F11 key or mouse middle button, to swap FDD/HDD diskimages.
Emscripten
- MSYS2
- Install Emscripten.
- Run MSYS2 64bit console
- Run follow command.
$ pacman -S git cmake make
- Linux
- Install Emscripten.
- Run follow command.
$ sudo apt install git cmake build-essential
- macOS
- Install Emscripten.
- Install XCode and brew.
- Run follow command.
$ sudo brew install cmake
- Change directory to NP2kai.
$ cd NP2kai
- Make work directory, and step in.
$ mkdir build
$ cd build
- Generate Makefile.
$ emcmake cmake ..
- Make.
$ make -j
- CMake options of Emscripten port (*=default)
name | value | work | output |
---|---|---|---|
USE_SDL2 | ON* | Build with SDL2 | emnp21kai.html |
USE_SDL2 | OFF | Build with SDL | emnp21kai_sdl1.html |
USE_SDL_MIXER | ON* | Build with SDL2_mixer | |
USE_SDL_TTF | ON* | Build with SDL2_ttf | |
BUILD_I286 | ON | Build i286 | emnp2kai.html |
BUILD_I286 | OFF* | Build IA-32 | emnp21kai.html |
- Emscripten SDL1 port cannot be with SDL_mixer and SDL_ttf
- Run on emrun.
$ emrun <Emscripten NP2kai filename>.html
OpenDingux
- GCW0
- Install host toolchain to /opt/gcw0-toolchain with buildroot.
- RG350
- Install host toolchain to /opt/rg350-toolchain with RG350_buildroot.
- patch.
- RS90
- Install host toolchain to /opt/rs90-toolchain with buildroot.
- Change directory to NP2kai.
$ cd NP2kai
- Make work directory, and step in.
$ mkdir build
$ cd build
- Generate Makefile.
- GCW0
$ cmake .. -D BUILD_OPENDINGUX_GCW0=ON
- RG350
$ cmake .. -D BUILD_OPENDINGUX_RG350=ON
- RS90
$ cmake .. -D BUILD_OPENDINGUX_RS90=ON
- Make.
$ make -j
- CMake options of OpenDingux port (*=default)
name | value | work | output |
---|---|---|---|
BUILD_OPENDINGUX_GCW0 | ON | Build OpenDingux GCW0 | np21kai_gcw0.opk |
BUILD_OPENDINGUX_RG350 | ON | Build OpenDingux RG350 | np21kai_rg350.opk |
BUILD_OPENDINGUX_RS90 | ON | Build OpenDingux RS90 | np21kai_rs90.opk |
USE_SDL2 | ON* | Build with SDL2 | <machine>_np21kai.opk |
USE_SDL2 | OFF | Build with SDL | <machine>_np21kai_sdl1.opk |
USE_SDL_MIXER | ON* | Build with SDL_mixer or SDL2_mixer | |
USE_SDL_TTF | ON* | Build with SDL_ttf or SDL2_ttf | |
BUILD_I286 | ON | Build i286 | np2kai_<machine>.opk |
BUILD_I286 | OFF* | Build IA-32 | np21kai_<machine>.opk |
- RS90 port cannot be with SDL2
- RS90 port cannot be with SDL_ttf
BIOS files location
- bios.rom
- font.rom or font.bmp
- itf.rom
- sound.rom
- (bios9821.rom or d8000.rom
But I never see good dump file.) - 2608_bd.wav
- 2608_sd.wav
- 2608_top.wav
- 2608_hh.wav
- 2608_tom.wav
- 2608_rim.wav
BIOS files locate in 'np2kai' directory at BIOS directory (configured by RetroArch).
Configure file (np2kai.cfg) is made in 'np2kai' BIOS directory.
To get BIOS files, you need actual PC-98 machine.
Start MS-DOS on the actual PC-98 and execute the GETBIOS command
(included in the np2tool/np2tool.zip floppy image)
to create BIOS files.
Rhythm sound files are dumped from PC-98 machine with FM sound gen.
You can get sound files from here.
Fonts
NP2kai recommend font is using font.rom.
You can use 'MS Gothic'. To install add your windows,
'install files Easten Asian languages' at 'language' option.
After installation, 'msgothic.ttc' file's shortcut named 'default.ttf' put in BIOS directory.
(Already exist 'font.tmp', delete this.)
And start NP2kai.
I recommend use 'Takao Gothic'.
Install with follow command.
After installation, 'TakaoGothic.ttf' file's shortcut put in BIOS directory.
sudo apt install 'fonts-takao-*'
and
ln -s /usr/share/fonts/truetype/takao-gothic/TakaoGothic.ttf BIOSdirectory/default.ttf'
Already exist 'font.tmp', delete this.
And start NP2kai.
You can use 'Noto sans mono CJK', 'MS Gothic'(Japanese) also.
NP2 menu (different libretro menu)
NP2 menu is shown F12 or mouse middle button or L2.
NP2 menu can swap FDD/HDD diskimages.(Swapping HDD need reset.)
Mounting/Swaping Disk and HDD/CD mounting at start
Using libretro contents .m3u file listed floppy disk images,
You can use libretro swap interface.
(This file must be wiritten in UTF-8.)
1st.d88
2nd.d88
3rd.d88
1st image is mouted to FDD1, 2nd image is mouted to FDD2.
(Not suitable when using only one FDD1 drive. Use NP2 menu.)
To swap FDD2 imagefile, libretro menu durling run core,
'Disk Control' -> 'Disk Cycle Tray Status' (eject) -> 'Disk Index' -> 'Disk Cycle Tray Status' (disk set)
So, to swap FDD1 imagefile, libretro 'Option' menu -> 'Swap Disks on Drive' set 'FDD1'
HDD/CD image can't be wiritten in .m3u file
You can write to .cmd file commandline,
(This file must be wiritten in UTF-8.)
np2kai fdilocation/aaa.fdi hdilocation/bbb.hdi isolocation/ccc.iso
'aaa.fdi' is mounted to FDD1,
'bbb.hdi' is mounted to HDD1,
'ccc.iso' is mounted to CD drive.
(Determined by extension)
.m3u files can written in .cmd file.
Then, You can FDs+HD and FDs+CD contents file.
Using mouse (Joypad mouse mode)
Mouse cursor moving is always enable with mouse on PC.
If mouse cannot use on a game,
check mouse driver for the game or included in MS-DOS is loaded by CONFIG.SYS.
(Or MS-DOS's mouse driver inhibit the game only mouse driver.)
DEVICE=A:¥DOS¥MOUSE.SYS
Mouse cursor moving and left-button be able to controled with joypad stick.
Switch Stick2Mouse mode in config to 'L-stick' or 'R-stick(default)'.
- Stick: mouse move
- Thumb: mouse left button
- ClickShift+Thumb: mouse right button
ClickShift button is assigned to R1 default.
To using digital pad, switch 'Joypad mode' in config to 'Mouse'.
Mouse cursor is able to move with joypad's digital button also.
- D-UP/DOWN/LEFT/RIGHT: mouse move
- B button: mouse left button
- A button: mouse right button
- R button: mouse speed up durling hold
Using keyboard (Joypad Keyboard mode)
Keyboard is able to control with joypad.
Switch 'Joypad mode' in config to 'Arrows' or 'Keypad' (or 'Manual keyboard').
- D-UP/DOWN/LEFT/RIGHT: Arrow key or Keypad(2468) key
(No notation)
- B button: Z key
- A button: X key
- X button: Space key
- Y button: left Ctrl key
(3 button)
- B button: X key
- A button: C key
- X button: Space key
- Y button: Z key
- L button: Backspace key
- R button: right Shift key
- Select button: Escape key
- Start button: Return key
By setting 'Manual Kayboard', you can custom keycode for button.
Change 'lrjoybtn' value in system/np2kai/np2kai.cfg.
This value is little endian and 12 values of 16bits(2Bytes) are arranged.
Write the key code of RETROK (see libretro.h) to this value.
The order is D-UP/DOWN/LEFT/RIGHT/A/B/X/Y/L/R/Select/Start.
Using ATARI joypad (Joypad ATARI mode)
By setting 'ATARI joypad', you can use ATARI joypad port.
- A button: A button
- B button: B button
- X button: Rapid A button
- Y button: Rapid B button
Tuning performance
- CPU clock Change "CPU Clock Multiplyer".
- Memory size
Change "RAM Size".
- MS-DOS 5 or older : lower 16.6MB
- MS-DOS 6 : lower 64.6MB
- Sound device
- 26K: for old games.
- 86: for newer games.
- Sound Generator (to change need reset)
- fmgen: fmgen sound generator.
- Default: NP2's default sound generator.
- How to set GDC 2.5MHz/5MHz?
- Press End key(assigned Help key) + reset
- Select 'ディップスイッチ2'(DIP switch 2)
- How to key typing?
There are two ways:
- map the 'enable hotkeys' hotkey in settings > input > input hotkey binds and RetroArch will stop listening for hotkeys unless/until you hold that button/key
- enable the "game focus mode" (mapped to scroll_lock by default) and it will send all of your inputs to the core instead of the frontend. However, some people have reported having trouble getting out of game focus mode. (Thanks hasenbanck)
Common
PC-98key | key | problem | menu |
---|---|---|---|
STOP | Pause | ||
COPY | PrintScreen | don't come event | implemented |
v.f1 | can't push | ||
v.f2 | can't push | ||
v.f3 | can't push | ||
v.f4 | can't push | ||
v.f5 | can't push | ||
Kana | can't push | implemented | |
GRPH | RCtrl | ||
NFER | LAlt | ||
XFER | RAlt | ||
HOME/CLR | Home | ||
HELP | End | ||
KP= | KP= | can't push | implemented |
KP. | KP. | don't come event | implemented |
JP106 keyboard(default)
PC-98key | key | info | menu |
---|---|---|---|
¥ |¥ |don't come event | implemented | ||
_ _ | L2? Menu has open? | implemented |
US101 keyboard
PC-98key | key | info | menu |
---|---|---|---|
2 " | 2 @ | two event 0x02,0x2A | |
¥ |\ | | |||
@ ` | ` ~ | don't come event | implemented |
; + | ; : | ||
: * | ' " | ||
_ _ | can't push | implemented |
Common
PC-98key | key | problem | menu |
---|---|---|---|
STOP | Pause | ||
COPY | can't push | ||
v.f1 | can't push | ||
v.f2 | can't push | ||
v.f3 | can't push | ||
v.f4 | can't push | ||
v.f5 | can't push | ||
Kana | can't push | ||
GRPH | RCtrl | ||
NFER | LAlt | ||
XFER | RAlt | ||
HOME/CLR | Home | ||
HELP | End | ||
KP= | KP= | can't push |
JP106 keyboard(default)
All keys are used, OK.
US101 keyboard
PC-98key | key | info | menu |
---|---|---|---|
2 " | 2 @ | ||
6 & | 6 ^ | ||
7 ' | 7 & | ||
8 ( | 8 * | ||
9 ) | 9 ( | ||
0 |
0 ) | ||
- = | - _ | ||
^ ~ | = + | ||
¥ |\ | | |||
@ ` | [ { | ||
[ { | ] } | ||
; + | ; : | ||
: * | ' " | ||
] } | ` ~ | ||
_ _ | can't push | implemented |
Setting to RetroPie
- Install Japanese font. (umefont need SDL2 port only)
$ sudo apt-get install fonts-droid fonts-horai-umefont
- Locate libretro & SDL2 port files.
$ sudo mkdir /opt/retropie/libretrocores/lr-np2kai
$ sudo cp np2kai_libretro.so /opt/retropie/libretrocores/lr-np2kai/
$ sudo mkdir /opt/retropie/emulators/np2kai
$ sudo cp np2kai /opt/retropie/emulators/np2kai/
$ sudo touch /opt/retropie/emulators/np2kai/np2kai.cfg
$ sudo chmod 666 /opt/retropie/emulators/np2kai/np2kai.cfg
- Write & locate retroarch.cfg.
$ sudo vi /opt/retropie/configs/pc98/retroarch.cfg`
Settings made here will only override settings in the global retroarch.cfg if placed above the #include line
input_remapping_directory = "/opt/retropie/configs/pc98/"
#include "/opt/retropie/configs/all/retroarch.cfg"
- Locate BIOS files.
BIOS files locate in "˜/RetroPie/BIOS/np2kai/" directory.
and "/opt/retropie/emulators/np2kai/" too. - Make shortcut to Japanese font. (SDL2 port only)
$ sudo ln -s /usr/share/fonts/truetype/horai-umefont/ume-ugo4.ttf /opt/retropie/emulators/np2kai/default.ttf
- Add "carbon-mod". (Japanese nize)
$ git clone https://github.com/eagle0wl/es-theme-carbon.git`
$ sudo cp -r ./es-theme-carbon /etc/emulationstation/themes/carbon-mod
- Add to "/etc/emulationstation/es_systems.cfg" writing.
$ sudo nano /etc/emulationstation/es_systems.cfg`
</system>
<system>
<name>pc98</name>
<fullname>PC-98</fullname>
<path>/home/pi/RetroPie/roms/pc98</path>
<extension>.d88 .88d .d98 .98d .fdi .xdf .hdm .dup .2hd .tfd .nfd .hd4 .hd5 .hd9 .fdd .h01 .hdb .ddb .dd6 .dcp .dcu .flp .bin .fim .img .ima .D88 .88D .D98 .98D .FDI .XDF .HDM .DUP .2HD .TFD .NFD .HD4 .HD5 .HD9 .FDD .H01 .HDB .DDB .DD6 .DCP .DCU .FLP .BIN .FIM .IMG .IMA .thd .nhd .hdi .vhd .sln .hdn .hdd .THD .NHD .HDI .VHD .SLN .HDN .HDD .m3u .M3U</extension>
<command>/opt/retropie/supplementary/runcommand/runcommand.sh 0 _SYS_ pc98 %ROM%</command>
<platform>pc98</platform>
<theme>pc98</theme>
<directlaunch/>
</system>
<system>
- Add to "/opt/retropie/configs/pc98/emulators.cfg" writing.
$ cd /opt/retropie/configs
$ sudo mkdir pc98
$ cd pc98
$ sudo nano emulators.cfg
np2kai="/opt/retropie/emulators/np2kai %ROM%"
lr-np2kai="/opt/retropie/emulators/retroarch/bin/retroarch -L /opt/retropie/libretrocores/lr-np2kai/np2kai_libretro.so --config /opt/retropie/configs/pc98/retroarch.cfg %ROM%"
<br><br>default="lr-np2kai"
- Launch ES and set "CARBON-MOD" to "THEME-SET".
Key-repeat (libretro and SDL)
To use Key-repeat, enable in menu.
On default, Key-repeat's delay is 500ms, Key-repeat's interval is 50ms.
Using CD-ROM drive
To use CD drive with MS-DOS 6.2,
write follow to CONFIG.SYS.
LASTDRIVE=Z
DEVICE=A:¥DOS¥NECCDD.SYS /D:CD_101
And write follow to AUTOEXEC.BAT.
A:¥DOS¥MSCDEX.EXE /D:CD_101 /L:Q
Then, you'll can use CD drive as Q drive.
How many files(0-15)?
This screen is boot as PC-98 ROM BASIC mode.
You succeed to locate BIOS files.
Your floppy/harddisk image isn't mount correctry.
Check selecting image files and restart.
About PC-9801 floppy disk image
NP2 is made according to PC-98 specifications.
Floppy disk types are 720KB(2DD) and 1.23MB(2HD).
The floppy drive differs from the one of the PC/AT on the hardware level.
(There are a few floppies formatted to 1.44MB(2HD) using MS-DOS 6.2.)
A common mistake is to create a floppy disk image with PC/AT.
Some disk imager for PC/AT software is useful, but can't use PC-98 formatted floppy disk.
To read data from PC-98 formatted floppy disk,
You must use Win2000 older and '3-mode' floppy disk drive.
Also, many PC-98 floppy disks are provided with powerful copy guard for DRM.
If you are in the way, you should use WIZARD V3/V5.
It is better to have no obstacle.
And also, you may simply convert the image format.
VFIC (Virtual Floppy Image Converter)
https://www.vector.co.jp/soft/win95/util/se151106.html
Virtual Floppy Drive
https://sites.google.com/site/chitchatvmback/vfd
Hard disk image
DiskExplorer is useful for hard disk image management.
This software can access files in image nicely.
Only FAT is supported, NTFS does not correspond.
DiskExplorer
https://hp.vector.co.jp/authors/VA013937/editdisk/index.html
To use libnvl.so functions (X11)
http://euee.web.fc2.com/tool/nvl/np2kainvl.html
Locate libnvl.so to /usr/local/lib/.
Then we can use follow types HDD image files.
- vmdk
- dsk
- vmdx
- vdi
- qcow
- qcow2
- hdd
Text editor
MS-DOS for PC-9801 include 'SEDIT.EXE' text editor.
Also there is 'VZ Editor' product.
About LHA(lzh) archived file
Memory driver
When start PC-98, memory amount is displaied.
MEMORY 640KB + 13312KB
640KB is conventional memory.
(For example) 13312KB is extnded memory.
Extnded memory is use as XMS(eXtended Memory Specification)
by HIMEM.SYS is written in CONFIG.SYS.
DEVICE=A:¥DOS¥HIMEM.SYS
Drivers and daemons can be loaded on XMB.
(But EMM386.EXE, SMARTDRV.EXE, NECCD*.SYS cannot be loaded on XMB.)
DEVICEHIGH=A:¥DOS¥MOUSE.SYS
DEVICEHIGH=A:¥DOS¥RAMDISK.SYS /X 1536
8086 or V30 can use HMA(448KB XMS).
i286 or later,
MS-DOS 5 or older can use lower 16MB XMS.
MS-DOS 6 can use lower 64MB XMS.
XMB can use as UMB(386KB), EMB by
EMM386.EXE(old EMM386.SYS) is written in CONFIG.SYS.
DEVICE=A:¥DOS¥EMM386.EXE /P=64 /UMB /DPMI
'/P=64' means using EMS 64page (1page=16KB).
'/DPMI' means with DPMI support.
Normaly, MS-DOS is located on conventional memory.
You can use XMB and UMB, DOS can be located on them,
DOS=HIGH,UMB
If you use upper 64MB XMB,
you can use VEM486 (deposit software)
instead of HIMEM.SYS and EMM386.EXE.
DEVICE=A:¥VEM486¥VEM486.EXE
Running Turbo C++ 4.0
To run Turbo C++ 4.0, use HIMEM.SYS only.
Running NASM
To run NASM, use DPMI(HIMEM.SYS + EMM386.EXE + DPMI option).
And before run NASM, set swap follow command.
A:¥NASM¥CWSDPMI.EXE -S A:¥NASM¥CWSDPMI.SWP
CWSDPMI.EXE is loaded on memory continuous.
A:¥NASM¥CWSDPMI.EXE -P -S A:¥NASM¥CWSDPMI.SWP
To free
A:¥NASM¥CWSDPMI.EXE -U
Using linker
I think better linker is genarate 16bit executable one.
(Ex.LNK563)
if Not careful, you can use MASM's linker.
About MS-C
When MS-C ver.5 is released, users use MS-DOS 3.0.
MS-C ver.6 is worked on Windows DOS prompt only.
Then MS-C is unconvenience to MS-DOS.
I think Turbo C++ 4.0 is used.
Network Card
NP2kai can use NIC that is follow spec.
MELCO LGY-98
IRQ:6
I/O:0x00D0
WAB (Window Accelerator Boards)
NP2kai can use WAB (Window Accelerator Boards).
To use WAB, enable WAB in menu and restart.
WAB Type normally uses 'PC-9821Xe10,Xa7e,Xb10 built-in'.
640x480 256 color support for Windows 3.1
- Switch to directory 'A:¥WINDOWS', then run 'SETUP' command.
- Select display mode '640x480 256色 16ドット(9821シリーズ対応)', or '640x480 256色 12ドット(9821シリーズ対応)' for smaller system font, then complete the changes. You may need Windows 3.1 installation disks when applying changes for the display driver.
- Extract 'EGCN4.DRV' and 'PEGCV8.DRV' from 'MINI3.CAB' in Windows 98 CD.
- Copy extracted 'EGCN4.DRV' and 'PEGCV8.DRV' to 'A:¥WINDOWS¥SYSTEM' directory, so as to replace the original driver files from Windows 3.1 installation disk.
- Type 'win' command to check if the driver works well.
NOTE: Do not run MS-DOS prompt with fullscreen mode, or your screen will get garbled when switching back to Windows environment.
You can use WAB Type 'WAB-S', 'WSN', 'GA-98NB'.
-
WAB-S driver http://buffalo.jp/download/driver/multi/wab.html
-
WSN driver http://buffalo.jp/download/driver/multi/wgna_95.html
-
GA-98NB driver https://www.iodata.jp/lib/product/g/175_win95.htm
Hook fontrom (textize)
Hook to using fontrom and output text to 'hook_fontrom.txt' in BIOS directory.
This function is disable at start NP2kai.
Debug snapshot
(version, SHA-1 hash of FDs and CDs, displaied image, state of machine.) Those information files are saved into 'debugss' directory in BIOS directory.
Take snapshot before and after the problem with reproducibility,
This function is used for communication purposes.
(Probably will be large file, so compression with ZIP
and be careful hosting when reporting.)
Video filter
Video filter1 have 3 profiles.
A profile include 3 filters.
Filters are applied in order.
filter0 -> filter1 -> filter2
Filter's parameters are set to 'vf1_p(profile no)_p(filter no)' to 8 params.
Param No | Name | value |
---|---|---|
0 | Enable | 0:OFF/1:ON |
1 | Filter Type No | (follow table Filter Type no) |
2 | Param 0 | |
3 | Param 1 | |
4 | Param 2 | |
5 | Param 3 | |
6 | Param 4 | |
7 | Param 5 |
Filter Type No | Filter Name | Param 0 | Param 1 | Param 2 | Param 3 | Param 4 | Param 5 |
---|---|---|---|---|---|---|---|
0 | THRU | - | - | - | - | - | - |
1 | NP(Nega/Posi) invert | - | - | - | - | - | - |
2 | Depth down | 0-7:downbits (default 7) |
- | - | - | - | - |
3 | Grey | 0-8:Grey depth | 0-359:H of white (default 0) |
0-255:S of white (default 0) |
0-255:V of white (default 255) |
- | - |
4 | V Gamma | 1-255:Gamma*10 (default 10) |
- | - | - | - | - |
5 | Rotate H | 0-359:Rotate H (default 0) |
- | - | - | - | - |
6 | HSV smoothing | 5-25:Radius*10 (default 5) |
1/3/5:Sample count (default 3) |
0-180:Merge H diff (default 30) |
0-128:Merge S diff (default 30) |
0-128:Merge V diff (default 90) |
Weight 0:Same/1:Linear/2:Sign (default 0) |
7 | RGB smoothing | 5-25:Radius*10 (default 5) |
1/3/5:Sample count (default 3) |
0-128:Merge R diff (default 30) |
0-128:Merge G diff (default 30) |
0-128:Merge B diff (default 30) |
Weight 0:Same/1:Linear/2:Sign (default 0) |
HSV/RGB smoothing is heavy to work.
External MIDI
NP2kai can use external MIDI sound generator with UM-1.
- Connect UM-1 to USB
- Check you can see 'C4D0' by '$ ls /dev/snd' command
- Open xnp2kai
- Select xnp2kai's menu 'Device' -> 'MIDI option...'
- Set '/dev/snd/C4D0' to 'MIDI-OUT' in ’Device' frame
- Select 'MIDI-OUT device' to 'MIDI-OUT' in ’Assign' frame
- Press 'OK'
- I tried with Touhou 2 (set MIDI option), I can listen MIDI sound.
Timidity++ (software MIDI synthesizer)
NP2kai can software synthesizer Timidity++ as Virtual MIDI.
It seems that Timidity++ is incompatible with PulseAudio.
By changing to ALSA output, I was able to play sound.
- Install Timidity++ and fluid-soundfont-gm
$ sudo apt-get install timidity fluid-soundfont-gm
- Edit timidity.cfg
$ sudo nano /etc/timidity/timidity.cfg
#source /etc/timidity/freepats.cfg<br>
source /etc/timidity/fluidr3_gm.cfg
- restart timidity
$ sudo service timidity restart
$ aconnect -o
This time, you can see like Timidity port 128:0 to 128:3.
5.
$ timidity -iA -B2,8 -Os &
Run timidity daemon output to ALSA.
$ aconnect -o
This time, you can see like ALSAed Timidity port 129:0 to 129:3.
6.
$ sudo modprobe snd-virmidi
Add virtual MIDI port module.
$ aconnect -o
This time, you can see like VirMIDI 3-0 to 3-3 at 28:0 to 31:0.
7.
$ ls /dev/snd
You can also see VirMIDI 3-0 to 3-3 at midiC3D0 to midiC3D3.
8. Connect VirMIDI 3-0 and ALSAed Timidity port 0.
$ aconnect 28:0 129:0
- Finally set '/dev/snd/midiC3D0' to xnp2kai.
Next boot computer, you command from 4.
- Oct 22, 2020
(Thanks to @miyamoto999)
- Key-repeat
- Sep 28, 2020
- merge NP21/W rev.78
- Sep 9, 2020
- [SDL,lr] Fix GRPH and LWin keycode (thanks miyamoto999!)
- Sep 4, 2020
- Apply to Nixpkgs package
- Aug 19, 2020
- merge NP21/W rev.77
- Aug 12, 2020
- fix mouse input off
- Jul 18, 2020
- merge NP21/W rev.76
- Jul 14, 2020
- add mouse input off
- Jun 23, 2020
- merge NP21/W rev.75
- Jun 21, 2020
- merge NP21/W rev.74
- Jun 15, 2020
- [not lr] state save/load at first of main loop
- Jun 12, 2020
- Video filter
- May 22, 2020
- CMake
- Emscripten
- Debug snapshot
- May 10, 2020 (rev.22)
- merge NP21/W rev.73
- Apr 20, 2020
- May 10, 2020 (rev.22)
- merge NP21/W rev.73
- mod OpenDingux
- Apr 19, 2020
- J2K/J2M -> JoypadMode
- add ATARI joypad
- J2K/J2M -> JoypadMode
- Apr 9, 2020
- hook fontrom (textize)
- Apr 5, 2020
- [Windows]
- add send to SSTP(伺か,ukagaka) from xnp2
- apply wide character (inner UTF-8)
- add codecnv
- UTF-32(UCS4)
- [Windows]
- Apr 2, 2020
- reform compiler options
- Mar 31, 2020
- [libretro] fix input
- mash trigger, too fast move
- J2K 'Manual' setting lost
- add S2M click shift (l to r) button (default R1)
- [libretro] fix input
- Mar 30, 2020
- add LittleOrchestraL, MultimediaOrchestra from np2s
- Mar 28, 2020
- Merge NP21/W rev.72
- [libretro] using lr file stream API
- safe string function
- np2min/np2max to MIN/MAX
- common base compiler.h (compiler_base.h)
- [X11] fix SUPPORT_PC9821
- [SDL2] mod Windows file access
- Mar 13, 2020
- Merge NP21/W rev.71
- [libretro] add CPU feature
- fix Sound Blaster 16 (OPL3)
- GamePort on soundboards
- Merge NP21/W rev.71
- Mar 6, 2020
- [SDL2/X11] fix default.ttf
- Mar 2, 2020
- Using absolute/rerative path in .m3u and .cmd list file
- [libretro] not remember last HDD mount
- Feb 18, 2020
- fix V30 and 286 flag register
- Feb 4, 2020
- Merge NP21/W rev.70 strongly
- Merge NP21/W rev.70
- update libretro-common
- Jan 29, 2020
- fix X11 no sound (please check 'sounddrv = SDL' in .config/xnp2kai/xnp2kairc)
- fix for GKD350H
- fix for GCW0
- Jan 26, 2020
- mod mouse cursor moving.
- Jan 15, 2020
- Support again SDL1
- fix bool
- Dec 10, 2019 (rev.21)
- Merge NP21/W 0.86 rev.69
- HAXM
- Merge NP21/W 0.86 rev.69
- Nov 19, 2019
- fix Android makefile
- merge yoshisuga/tvos THANKS!!
- add libretro/tvOS port
- merge part of swingflip/master THANKS!!
- add xx Clasic port
- merge part of yksoft1/emscripten THANKS VERY MUCH!!
- [SDL2 & libretro]
- fix WAB type value
- mod to apply UTF-8
- fix SUPPORT_LARGE_HDD
- WinNT4/200 IDE Fix
- fix Makefile21
- Jul 14, 2019 (rev.20)
- Merge NP21/W 0.86 rev.62-63
- Jun 23, 2019
- modify default cfg/BIOS location (np2kai or 'np21kai')
- Jun 21, 2019
- Fix SDL2 build and install
- Merge NP21/W 0.86 rev.57-61
...
- Jan 24, 2019
- Merge NP21/W 0.86 rev.56
- Jan 13, 2019
- Merge NP21/W 0.86 rev.55
- Jan 9, 2019
- Merge NP21/W 0.86 rev.53,54
- Dec 22, 2018
- Merge NP21/W 0.86 rev.52
- Dec 19, 2018
- Merge NP21/W 0.86 rev.51
- Dec 16, 2018
- Fix WAB
- Dec 14, 2018
- Merge NP21/W 0.86 rev.50
- Dec 10, 2018 (rev.18)
- Merge NP21/W 0.86 rev.48,49
- Nov 29, 2018
- Add MIDI support
- Nov 25, 2018
- Merge NP21/W 0.86 rev.47
- Oct 28, 2018
- Merge NP21/W 0.86 rev.46
- Oct 14, 2018
- Merge NP21/W 0.86 rev.45
- Sep 27, 2018
- Merge NP21/W 0.86 rev.44
- Aug 22, 2018
- Apply for libnvl.so
- Merge NP21/W 0.86 rev.43
- Jun 27, 2018 (rev.17)
- Merge NP21/W 0.86 rev.42
- Jun 19, 2018
- Add Joy2Key manual mode
- Merge NP21/W 0.86 rev.41
- Read GP-IB BIOS.(not work)
- Apr 26, 2018
- Add build for GCW Zero
- Apr 2, 2018 (rev.16)
- Add WAB (and a little tune)
- Mar 18, 2018
- Merge NP21/W 0.86 rev.40
- Mar 9, 2018
- [X11] add UI
- [SDL2] add and fix UI
- Mar 4, 2018
- refine keyboard map
- Feb 28, 2018
- [SDL2] config file selectable by command line
- Feb 20, 2018
- FONT.ROM/FONT.BMP can be loaded lower case.
- Feb 19, 2018
- [libretro] Apply disk swap interface
- Feb 17, 2018
- [X11] Mouse moving is more smopothly (Thanks frank-deng)
- Using *.img *.ima type floppy image (Thanks frank-deng)
- Feb 14, 2018
- Fix parse CUE sheet (Thanks frank-deng)
- Feb 6, 2018 (rev.15)
- NP2 namespace change to NP2kai
- [SDL2] Locate of config files is ~/.config/np2kai
- [X11] Locate of config files is ~/.config/xnp2kai
- Feb 5, 2018
- Merge NP21/W 0.86 rev.38
- Feb 4, 2018
- Add setting Joy to Mouse cursor speed up rasio
- Dec 5, 2017
- Default GDC clock is 2.5MHz
- In Joy2Mousem, mouse speed up with R button
- Nov 18, 2017
- Merge NP21/W 0.86 rev.37
- Oct 26, 2017
- Apply to 1.44MB FDD floppy image file
- Oct 21, 2017 (rev.14)
- Merge NP21/W 0.86 rev.36
- Mate-X PCM
- Sound Blaster 16
- OPL3 (MAME codes is GPL licence)
- Auto IDE BIOS
- Merge NP21/W 0.86 rev.36
- Oct 16, 2017 (rev.13)
- Refix BEEP PCM
- Oct 2, 2017 (rev.13)
- remove CDDA mod
- Sep 20, 2017
- [SDL2] Use SDL2 mixer
- Sep 16, 2017
- Add RaSCSI hdd image file support
- Sep 14, 2017 (rev.12)
- [libretro] (newest core binary is auto released by buildbot)
- Fix triple fault case
- Sep 7, 2017
- Fix BEEP PCM
- Aug 27, 2017 (rev.11)
- Merge NP21/w rev.35 beta2
- [libretro] state save/load
- Aug 23, 2017 (rev.10)
- Merge NP21/w rev.35 beta1
- Aug 22, 2017
- Merge 私家
Merged
- AMD-98 Joyport
- S98V3
- Otomichanx2
- V30 patch
- VAEG fix
- CSM voice Couldn't merged
- LittleOrchestra
- MultimediaOrchestra
- WaveRec
- Merge kaiE
- force ROM to RAM
- CDDA fix
- Floppie fix
- Merge 私家
Merged
- Aug 21, 2017
- Apply libretro-super build
- Aug 17, 2017 (rev.9)
- Apply fmgen
- Aug 3, 2017 (rev.8)
- Apply HRTIMER
- [libretro] input underscore(_) for western keyboard
- [libretro] Add Joy2Key (thanks Tetsuya79)
- Jul 24, 2017 (rev.7)
- Apply network
- Jul 18, 2017 (rev.6)
- Jul 17, 2017
- Apply HOSTDRV
- [libretro] Add Joy2Mouse mode (switch at config menu)
- Jul 4, 2017
- rename to 'kai'
- Jun 28, 2017
- [libretro] Applicate to libretro port
- Jun 21, 2017
- [X11] Applicate to X11 port
- Jun 20, 2017 (rev.6 beta)
- [NP21] fix for VGA
- Jun 19, 2017
- [NP21] fix IA-32
- more memory size available
- Jun 18, 2017
- more avilable FDD/HDD/CD-ROM image
- [NP21] FPU (fpemul_dosbox.c is GPL licence, others is MIT licence)
- Jun 12, 2017
- COM
- MIDI
- JOYSTICK
- IDE (can't use CD-ROM yet)
- SDL_Keycode -> SDL_Scancode
- Save BMP
- State Save
- Jun 4, 2017
- [NP21] お察しください
- Jun 1, 2017
- First release
- lvgl ?
- font.bmp
- GTK3 ?
- local UTF-8 to Wide conversion
- build for Win9x
- VST SDK 3
- BMS dialog
- Neko Project 2 (ねこープロジェクトII) http://www.yui.ne.jp/np2
- NP2 for Raspberry Pi https://github.com/irori/np2pi/wiki/NP2-for-Raspberry-Pi
- NP2 addon to RetroPie http://eagle0wl.hatenadiary.jp/entry/2016/10/07/213830
- NP21/W https://sites.google.com/site/np21win/home
- Neko Project 2 (PC98 emulator) port for libretro/RetroArch https://github.com/meepingsnesroms/libretro-meowPC98