Neko Project II kai
Oct 24, 2023
NP2kai is PC-9801 series emulator
$ cd NP2kai/sdl
$ make
$ git clone --depth 1 https://github.com/libretro/libretro-super.git
$ cd libretro-super
$ ./libretro-fetsh.sh np2kai
$ ./libretro-build-android-mk.sh np2kai
$ ./libretro-build-ios.sh 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.
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 |
$ 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 mingw-w64-x86_64-libusb
$ 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
$ sudo brew install cmake ninja sdl sdl_mixer sdl_ttf sdl2 sdl2_mixer sdl2_ttf libusb
$ cd NP2kai
$ mkdir build
$ cd build
$ cmake .. -D BUILD_SDL=ON
$ make -j
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 |
$ make install
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
$ 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
$ 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
$ cd NP2kai
$ mkdir build
$ cd build
$ cmake .. -D BUILD_X=ON
$ make -j
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 |
$ sudo make install
$ pacman -S git cmake make
$ sudo apt install git cmake build-essential
$ sudo brew install cmake
$ cd NP2kai
$ mkdir build
$ cd build
$ emcmake cmake ..
$ make -j
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 |
$ emrun <Emscripten NP2kai filename>.html
$ cd NP2kai
$ mkdir build
$ cd build
$ cmake .. -D BUILD_OPENDINGUX_GCW0=ON
$ cmake .. -D BUILD_OPENDINGUX_RG350=ON
$ cmake .. -D BUILD_OPENDINGUX_RS90=ON
$ make -j
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 | |
USE_SDL2 | OFF | Build with SDL | |
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_ |
BUILD_I286 | OFF* | Build IA-32 | np21kai_ |
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.
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 is shown F12 or mouse middle button or L2.
NP2 menu can swap FDD/HDD diskimages.(Swapping HDD need reset.)
Using .m3u file listed floppy disk images,
You can use libretro swap interface.
(This file must be wiritten in UTF-8.)
(On libretro m3u file supported is not in core now.)
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.
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)'.
To using digital pad, switch 'Joypad mode' in config to 'Mouse'.
Mouse cursor is able to move with joypad's digital button also.
Keyboard is able to control with joypad.
Switch 'Joypad mode' in config to 'Arrows' or 'Keypad' (or 'Manual keyboard').
(No notation)
(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.
By setting 'ATARI joypad', you can use ATARI joypad port.
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 |
PC-98key | key | info | menu |
---|---|---|---|
¥ |¥ |don't come event | implemented | ||
_ _ | L2? Menu has open? | implemented |
PC-98key | key | info | menu |
---|---|---|---|
2 " | 2 @ | two event 0x02,0x2A | |
¥ |\ | | |||
@ ` | ` ~ | don't come event | implemented |
; + | ; : | ||
: * | ' " | ||
_ _ | can't push | implemented |
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 |
All keys are used, OK.
PC-98key | key | info | menu |
---|---|---|---|
2 " | 2 @ | ||
6 & | 6 ^ | ||
7 ' | 7 & | ||
8 ( | 8 * | ||
9 ) | 9 ( | ||
0 |
0 ) | ||
- = | - _ | ||
^ ~ | = + | ||
¥ |\ | | |||
@ ` | [ { | ||
[ { | ] } | ||
; + | ; : | ||
: * | ' " | ||
] } | ` ~ | ||
_ _ | can't push | implemented |
$ sudo apt-get install fonts-droid fonts-horai-umefont
$ 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
$ 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"
$ sudo ln -s /usr/share/fonts/truetype/horai-umefont/ume-ugo4.ttf /opt/retropie/emulators/np2kai/default.ttf
$ git clone https://github.com/eagle0wl/es-theme-carbon.git`
$ sudo cp -r ./es-theme-carbon /etc/emulationstation/themes/carbon-mod
$ 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>
$ 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"
To use Key-repeat, enable in menu.
On default, Key-repeat's delay is 500ms, Key-repeat's interval is 50ms.
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.
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.
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
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
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.
MS-DOS for PC-9801 include 'SEDIT.EXE' text editor.
Also there is 'VZ Editor' product.
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
To run Turbo C++ 4.0, use HIMEM.SYS only.
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
I think better linker is genarate 16bit executable one.
(Ex.LNK563)
if Not careful, you can use MASM's linker.
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.
NP2kai can use NIC that is follow spec.
MELCO LGY-98
IRQ:6
I/O:0x00D0
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
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
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.
Set RetroArch's 'Setting' -> 'Audio' -> 'MIDI' -> 'Output' -> '(MIDI device)' in menu.
NP2kai can use 'Microsoft GS Wavetable Synth'.
NP2kai can use external MIDI sound generator with UM-1(USB-MIDI interface).
NP2kai can use external MIDI sound generator with UM-1(USB-MIDI interface).
NP2kai can software synthesizer Timidity++ as ALSA Virtual MIDI.
$ sudo apt install timidity timidity-interfaces-extra fluid-soundfont-gm fluid-soundfont-gs
$ sudo nano /etc/timidity/timidity.cfg
#source /etc/timidity/freepats.cfg<br>
source /etc/timidity/fluidr3_gm.cfg
$ sudo service timidity restart
$ timidity -iA -B2,8 -Os &
Next boot computer, you command from 4. You can write to .profile, but Timidity daemon spend a bit CPU performance.
NP2kai's MIDI setting is in 'Device' -> 'MIDI option...'.
Set device file to 'Device''s 'MIDI-OUT'. (ex. /dev/snd/midiC0D0)
And set 'Assign''s 'MIDI-OUT' to 'MIDI-OUT device'.
NP2kai can use external MIDI sound generator with UM-1(USB-MIDI interface).
I tried with Touhou 2 (set MIDI option), I could listen MIDI sound.
NP2kai can software synthesizer Timidity++ as Virtual MIDI.
To using, necessaly setup Virtual MIDI Port module too.
$ sudo apt install timidity timidity-interfaces-extra fluid-soundfont-gm fluid-soundfont-gs
$ sudo nano /etc/timidity/timidity.cfg
#source /etc/timidity/freepats.cfg<br>
source /etc/timidity/fluidr3_gm.cfg
$ sudo service timidity restart
$ timidity -iA -B2,8 -Os &
You will see like ALSAed Timidity port 128:0 to 128:3.
$ aconnect -o
$ sudo modprobe snd-virmidi
(If you want to use snd-virmidi permanently, see detail info.)
$ aconnect -o
You can see like VirMIDI 0-0 to 0-3 at 16:0 to 19:0.
6. You can also see VirMIDI 0-0 to 0-3 as midiC0D0 to midiC0D3.
$ ls /dev/snd
$ aconnect 16:0 128:0
Next boot computer, you command from 4.