Ngine

What it is:
ngine is a multiplatform operating environment targeted at applications that need to have minimum effort for porting it to different operation systems and platforms. It is (as a first test) currently used for creating a NES emulator, but could be used for any application.

What is cool about it:
It puts absolutely minimal effort to the porter. The main program is organized in two parts, the kernel (system independent c++), and plugin code. This plugin code gets called by the kernel and may call kernel functions through a sophisticated messaging system.

..Umm yea, so what is cool about it:
Imagine your programs menuing system. Menus usually are target platform specific, and eat up lots of time for porting. With ngine, there is NOT a single line of porting code needed, as the kernel will display menuing controls on its own display area, and communicates with the input plugin to send/receive menu changes. It then redraws the display through the plugins RedrawGfx routine, which gets a pointer to an array of bytes to copy to the target macine display. And yes, any color depth is supported, even funky pixel formats. Just send our desired color depth to the kernel on startup.

Same story for the Keyboard controls. Imagine your ngine based Windows9X program, that you would like to port to WindowsCE. NO rewrite of input routines is ever needed in the kernel, although we have no keyboard. The input plugin sends keycodes to the kernel, which processes them as it pleases you. You are not going to be involved in anything but writing a routine that submits your stylus clicks, and ngine will take care of the rest.

Maybe it IS cool, now what can it do? :

  • Fully kernel based memory management
  • Coded for efficiency, speed, and little size. (overhead in RAM < 100k)
  • Supports Graphics display, Sound, Input, Networking and other target specific stuff (yes, a Linux application instance can be networked with a WindowsCE instance)
  • Full system independent menuing and other tools included.
  • Offers easy embedding of exiting applications.

Small FAQ:
Does it work with Platform X? Yes. all that needs to be done ONCE is writing the plugin code. ONCE only for ANY given ngine program.
Whats the minimum requirements? A C++ compiler for the target platform, a display able to display a pixel based image, and some means of input. The ngine core will not use a lot of resources, but the ultimate amount of RAM required is based on your target program running in the ngine.
This sounds pretty familiar to what MAME / PSEmu does... ...but its SO much more powerful. Talk about system independent menuing and messaging.
Is this going to help me find ROMS? no. go away.
Does it support DirectX? It supports whatever you want it to support. Included in the current implementation are DirectX and GDI plugins for Windows and Windows CE.
OK, i want to develop using this / port your emu, where is the download? Well, it isnt completed yet. It is heavily under construction, and some major parts of the application already work. In a few weeks, I will be posting a beta of the program to a limited amount of testers.

Development status:

  • Messaging core: done
  • Graphics core and example plugin: done, pending redesign
  • File IO core and example plugin: done
  • Keyboard IO core and example plugin: done
  • Font display: done
  • Menuing: 50%
  • Sound kernel routines: 20%
  • Networking: 0%

Plugin porting status:

  • Win32 (95/98/NT/2000): done
  • WindowsCE: 50%
  • WindowsCE (Dreamcast): 30%
  • Linux: about to start
  • QNX pending resource

Tell me more:
Sure thing. Mail me.

Maintained by tubooboo@ngine.de
all content © ngine.de

counter