Code Monkey home page Code Monkey logo

eka2l1 / eka2l1 Goto Github PK

View Code? Open in Web Editor NEW
1.4K 69.0 116.0 131.66 MB

A Symbian OS/N-Gage emulator

Home Page: https://eka2l1.github.io

License: GNU General Public License v3.0

CMake 1.01% Shell 0.03% Batchfile 0.06% Python 6.75% C++ 86.96% C 0.37% Makefile 0.02% Pan 0.01% GLSL 0.06% Assembly 0.14% Java 3.81% Lua 0.52% SourcePawn 0.13% Pawn 0.06% SCSS 0.01% Objective-C 0.01% Objective-C++ 0.04%
symbian emulator cpp17 emulation games emulates n-gage hacktoberfest

eka2l1's Introduction

 

Symbian OS/N-Gage emulator, written in C++ 17.


The emulator emulates Symbian OS/N-Gage's kernel, and reimplement most of its critical app servers and libraries.

Download Builds/Artifacts:

  • Builds/Artifacts for Windows, OSX, Linux and Android are provided through Github Actions. Click on the Releases section to get the newest stable build.

    • Note: There's no official maintainer for OSX and Linux versions of the emulator. Please report to the developers through issues if versions for these OSes are not working.

Compatibility:

  • At the moment the emulator supports:

    • Almost all official N-Gage/N-Gage 2.0 official libraries
    • Most of Symbian's game libraries from S60v1 to Symbian Belle
    • A limited subsets of Symbian applications.
  • Compatibility for the games and software that can (and can't) run on the emulator can be verified here

Links

For more information, discussion and support, please visit these links:

Screenshots

Calculator (5530) High Seize Dirk Dagger
calculator highseize dirkdagger1
The Big Roll in Paradise Mega Monster
BigRoll MegaMonster

Donations

From 2022, developing the emulator has shifted to become a part-time hobby and sometimes not actively maintained in months, since the compatibility for most popular games and Symbian operating systems have been satisfied.

Still, if you feel like our work has benefited you much and you want to support or give us some cheers, feel free to donate to two developers that maintain the PC/Android version by visiting the Sponsor this project section of the Github page.

Visit this link for more information.


GIFs are provided by Stranno!

Logo is designed and drawn by dmolina007 and Frenesi!

eka2l1's People

Contributors

agatti avatar faalagorn avatar florin9doi avatar hawkwood304 avatar literalmente-game avatar minexew avatar nehochupechatat avatar nikita36078 avatar pent0 avatar quanshousio avatar roma-jam avatar rtissera avatar ssine avatar tu-maurice avatar yagarea avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eka2l1's Issues

Input for RWindow

Need to think of a way that doesn't create input lag.
Currently window events are being pulled in different thread than emu thread

Softlock when Help is pressed on template application (ITried)

I get a softlock when Help is pressed on the ITried template application. Here are the messages I got that led up to it, all in a log file: EKA2L1.log

This line of text in the log interests me and might interest you because while you told me to please declare any references of the text libgles_cm or libgles, I think it might or might not also have something to do with OpenGL: E { eka2l1::drivers::ogl_graphics_driver::run: Corrupted graphics command list! Emulation halt. }

Audio and how it works

I'm certainly sure that there is an AudioServer somewhere, DLLAPI in Symbian usually not directly contacts with the hardware.

Games usually plays audio using CMdaAudioOutputStream. We needs to write a bare tests (No console) using the API to let it runs on the emu and detect that server, then lurking it on source code. Or find it on source code first

Memory leak issues

I came across two games that during the installation have a memory leak issue. In a couple of seconds, they take all available RAM until the PC shuts down.

First game is called FIFA 2009 for Symbian versions 9.1, 9.2 and 9.3
Here's the log file I managed to get before I had to close the emulator before my PC turned off:
fifa2009.log

Second game is called Motocross Masters for Symbian versions 9.4 and 9.5. S60 (5th (Symbian^1) and 5th (Symbian^3)). Here's the log:
motocross_masters.log

Rewrite core memory

THIS ISSUE MAY GET REMOVE

Currently dirty and not represent Symbian memory. Must done a rework asap in order to get to CPU part:

  • Enum of Symbian memory map addresses
  • Allocating function must set the base address of real Symbian region
  • Allocating and change protection when initialize Memory core to PROT_NONE
  • [ ] Add function allow loader to directly load the rom into memory instead of allocating and ugly mapping
  • [ ] Decommit the memory after freeing it

Translate more scancodes to keycodes

This function translates TStdScanCode to TKeyCode.

TKeyCode map_scancode_to_keycode(TStdScanCode scan_code) {

The scancode is already provided by the input driver when we receiving drivers event. But the keycode needs to be translated manually through this function.

It's not a finish translation list, so take a missing, unhandled scancode (TStdScanCode) and returns corresponds TKeyCode.

For example:
This is a keynum scancode: EStdKeyNumLock

The correspond should most of the time be the scancode name excluding the Std prefix

Here is the correspond keycode for example: EKeyNumLock

Add a switch case:

case EStdKeyNumLock: return EKeyNumLock;

Firmware Dumping

Any firmware is accepted, since the emulator will only take the libraries and all the app needed.

MinGW support

Currently, it assumes MSVC when targeting Windows & GCC/Clang/etc. on Unices.

There are a few issues need to be addressed before MinGW can be leveraged for compiling on Windows.

HLE implementation to SVC calls only

  • Save time, don't reimplement stuffs
  • Only do HLE implementation on specific functions that can't be implemented or should not be through SVC. e.g EGL or GLES calls.

J2ME Support

Symbian used to run j2me applications quite well (I tested it in Nokia's S60 SDK). Here's actual implementation of its Java Runtime:
https://github.com/SymbianSource/oss.FCL.sf.app.JRT

It's licensed as Eclipse Public License v1.0 (as seen in the source files), so it can't be just reused in a GPL project, but maybe it could be dynamically linked? Though I have no idea how to even build it.

But overall, is j2me support planned in the future? Emulation of this environment is really poor these days, the only emulator that supports most of it was KEmulator Lite, and it was bought out from its author and can't be developed. All others are broken to some degree. And there's no way to use emulator savestates in any of them. Yet there are lots of people interested in j2me, just no one with both time and skill :)

IPC handling

Needs to have a simple IPC client and kernel server that handling basic filesystem IPC functions like 3DS.
The most difference is that Symbian apps call many async IPC calls.

Package Manager and Filesystem

Implement a SIS package extractor and emulate Symbian filesystem

Filesystem:

  • Mount and unmount
  • Mapping directory
  • Host directory replacement for root name

Package Manager:

  • Sis fields declaration
  • Sis signature declaration
  • Sis data declaration
  • Sis parser
    • Parse field
    • Parse signature
    • Parse whole file
  • Extract data to specific location like Symbian
    • Basic comparison and logical operation
    • Chunk extraction
    • File op implementation
    • File Exists
    • App installed
    • Property check
  • Basic gui displays apps

Softlock when About is pressed on template application (ITried)

I get a softlock when About is pressed on the ITried template application. Here are the messages I got from running ITried, all in a log:
EKA2L1.log

This line of text in the log interests me and might interest you because while you told me to please declare any references of the text libgles_cm or libgles, I think it might or might not also have something to do with OpenGL: E { eka2l1::drivers::ogl_graphics_driver::run: Corrupted graphics command list! Emulation halt. }

List games apps

Apps usually that display on Symbian main menu, is actually queries by the Akn framework server.

On the first run of the server, on each drive, the folder :/resource/apps are scanned for *.rsc files. The RSC file will have multiple resource data, which will describes the app infos.

There are two sections and two things we need to mark down here:
Icon:

  • AppList parser
  • MIF file loading
    • Detect MIF type (SVG or MBM ?)
  • SVG rasterizer
  • MBM parser

Emulate MediatorServer

Mediator is an immediate server provides events and commands communication between processes.

Events, commands can be registered in domain and category, and can be raised and issues normally. Client can listen to events/commands rasing, and get a commands and events list to process.

Looks like this server is only available with EKA2

ARMv6 LLVM Jit

Playground when I got bored of FBS:

  • ARM decoder interface, linking with the recompiler
  • Analyser
  • Learn to use llvm::ExecutionEngine + context + llvm::ObjectCache
  • Learn how to emit IR and deals with 2 modes (thumb and ARM)
  • Deal with branching
  • SEH handlers
  • Figure out how to deal with ticks

SVG Tiny renderer

Base works has been done, however, it's too much of a work for now:

  • Binary SVG-Tiny renderer

  • XML SVG-Tiny renderer

    • Circle
    • Rectangle
    • Path
  • GZIP decompressor

Taking more control of guest system

These servers need to be reimplemented in EKA2L1:

  • !CentralRepository
  • !EComServer
  • !FontbitmapServer

These servera should be reimplemented:

  • !AknIconServer
  • !AknSkinServer

Should contains option to use native one.

Get critical servers to UI to initialize

Multi processes have been implemented, detailed can be seen in this July report

The purpose of multi processes is to LLE servers. Till now, with the master, two servers have been LLEed and run perfectly. These others either fail or not check. This issues keep track of which servers have been fixed and running perfectly now, and which one is not.

  • DomainMgr
  • EComServer
  • FBServer (Font bitmap server)

Source state

Source state is a big disavantage, should move them to a class.

  • core_timing.h
  • core.h

Instructions cache flushing

  • Use by Symbian application to do JIT (JVM, games, apps browser, etc...).
  • Implementation
    • Unicorn (unknown if there is manually way to flush from host without touching registers)
    • Dynarmic

Running servers with application

ROM provides use server executable. The plan is to implement server that touch the hardware part, and running servers that touch Symbian C++ objects.

The first priority is the FBS (Font and Bitmap Server). This server used a shared chunk created by the kernel at startup (name FbsSharedChunk), as a shared heap, so other processes can access it. With this server, we launched it, and when a User::WaitForAnyRequest is called, it switch the thread context and the server will process the request like normal.

GLES library hook

While most of classic games use AKN to intialize, it soon jumps to fullacreen and load GLES at runtime.

We can hook these libraries to increase performance and make it not to call any drivers function.

The exports of those libraries are frozen.

Symbiam

Emulação de symbiam e quase uma utopia
N- gage esta quase extinta
Parabens pelo trabalho

ABI issues

  • Issues:

    • GCC lower then 3.2 invalidates the ABI (Vtable)
    • GCC 2.x uses different ABI
    • Typeinfo and vtables are hard to recreate

    => Missing vtables without binary, libraries can't function correctly

  • Suggested solutions:

    • Solution 1: Keeping the ABI, replacing exports with fake interrupt
      Solution

      • Replacing export instructions with a fake interrupt, and stub other instructions with NOPs. No more additions stub, and still keep things functionally
      • Implementation: No PR yet
    • Solution 2: Emulates GCC ABI (including typeinfos and vtables)
      + Describes upper as not possible without knowledge of GCC implementation before 3.2
      + Leftover of solutions: Please see stub.cpp in emu/core/loader, and the sid/sym9.4 's meta.yml

    • Solution 3: Describes vtable and typeinfo in a struct and write them to memory manually
      + Possible, but non-portable, as API changed arguments and add more in different version of Symbian

    • Solution 4 (madaal): Set a breakpoint in exported functions and patch the export address
      + Good, don't have to modify anything
      + Bad: issues with ROM image (unsustainable export addresses, deal with it 👍 )

  • Yours ?

    • Add your thoughts on this.

Move config to manager system

Config needs another home, putting it in eka2l1::system* is just a horrible design and inconvenient.
Manager seems to be a good category to be stayed in

Add-on to multi-thread rendering

The actual behavior on Hardware follows the below:

  • Graphic context attached to a window, will draw to a bitmap
  • All bitmaps are sorted by priority and draw, by default, all bitmap has transparency = 0, unless you set the window related to a bitmap not visible.

Behavior on EKA2L1:

  • All textures are drawn on the screen with no priority
  • Window mechanic doesn't exist on driver side, and things are drawn directly to the screen.

TODO:

  • Create a window mechanic on the driver side.
  • Window when active should drawn stuff into it's own framebuffer.
  • Sort driver window by priority

Installer Crash

The installer crashes with certain titles that require various qT libs like QtSql, QtCamera, QtSensor
The crash can be triggered with the 'Motocross Masters' game.

EKA2 Image Loading

Implement an EKA2 Image Loader for Executable

  • Header loader
  • Read and emit flags
  • Handle image
    • No format
    • J format
    • V format
  • Compression
    • Deflated
    • Byte pair
  • Read and emit import types
  • Read and emit relocations
  • Build relocations
  • Emit stub
  • Load to memory

Softlock when certain buttons are pressed on template application (ITried)

When I press certain buttons in ITried, the emulator softlocks. Here are the logs I got from each one:

  1. Message - EKA2L1.log
  2. Message from file - EKA2L1.log
  3. Help - EKA2L1.log
  4. About - EKA2L1.log
  5. Exit - EKA2L1.log

This line of text in the logs of my tests with Help and About interests me and might interest you because while you told me to please declare any references of the text libgles_cm or libgles, I think it might or might not also have something to do with OpenGL: E { eka2l1::drivers::ogl_graphics_driver::run: Corrupted graphics command list! Emulation halt. }

FS:USER IPC & Tracking FBS

Tracking FBS

  • stb_truetype for GetNearestFontToDesign/MaxHeight using stbtt_GetVFontMetrics
  • Fake vtable for CBitmapFont but still success
  • CFixFlatArray for FontAttrib (looks like used for both Qt and AKN)
  • CBitwiseBitmap declaration and bitmap creation
  • Found out usage of FbsSharedChunk and FbsLargeChunk (one is used for storing advance info class globally, one is for storing large bitmap)
  • Found out how CBitwiseBitmap detect hardware bitmap, and shared/vs large chunk bitmap (shared type will have iHeap != NULL)
  • MBM loading (taken)
    • Run-length decompression (#50)
    • MBM binary parser (ac18fbe)
  • Implement FBS opcodes:
    • fbs_load
      • MBM
      • RSC
  • Fill more opcodes, see comment below (good for starters)

FS:USER IPC

  • EFsAddCompositeMount, ///< Add a mount to the composite file system
  • EFsAddExtension, ///< Adds the specified extension
  • EFsAddFileSystem, ///< Adds a file system
  • EFsAddPlugin, ///< Adds the specified plugin
  • EFsAddProxyDrive, ///< Loads a proxy drive
  • EFsAllowDismount, ///< Notifies that it is safe to dismount the file system
  • EFsBlockMap, ///< Fetches the BlockMap of a file
  • EFsCheckDisk, ///< -- 60 Checks the integrity of the disk on the specified drive
  • EFsClearPassword, ///< Clears the password from the locked MultiMedia card
  • EFsControlIo, ///< General purpose test interface
  • EFsCreatePrivatePath, ///< Creates the private path for a process
  • EFsDebugFunction, ///< Different debugging info
  • EFsDefaultPath, ///< Gets the system default path
  • EFsDelete, ///< Deletes file
  • EFsDirOpen, ///< Opens a directory
  • EFsDirReadOne, ///< -- 50 Reads a single directory entry
  • EFsDirReadPacked, ///< Reads all filtered directory entries
  • EFsDirSubClose, ///< Closes the directory.
  • EFsDismountExtension, ///< -- 90 Dismounts the specified extension
  • EFsDismountFileSystem, ///< Dismounts the file system from the specified drive
  • EFsDismountPlugin, ///< Dismounts the specified plugin
  • EFsDismountProxyDrive, ///< Dismounts a proxy drive
  • EFsDrive, ///< Gets information about a drive and the medium mounted on it
  • EFsDriveList, ///< Gets a list of the available drive
  • EFsEntry, ///< Gets a file's attributes
  • EFsErasePassword, ///< Erase the password from the locked MultiMedia card
  • EFsExtensionName, ///< Gets the name of the extension on the specified drive
  • EFsFileAdopt, ///< Adopts an already open file
  • EFsFileAtt, ///< Gets the file's attributes
  • EFsFileChangeMode, ///< Switches an open file's access mode
  • EFsFileClamp, ///< Disable modification of a specified file in storage media
  • EFsFileCreate, ///< Creates and opens a new file
  • EFsFileDrive, ///< Gets drive information on which this file resides
  • EFsFileDuplicate, ///< Makes a duplicate of this file handle
  • EFsFileFlush, ///< Commits data to the storage device
  • EFsFileFullName, ///< Gets the full filename
  • EFsFileLock, ///< Locks a region within the file
  • EFsFileModified, ///< Gets local date and time the file was last modified
  • EFsFileName, ///< Gets the final part of a filename
  • EFsFileOpen, ///< -- 30 Opens file
  • EFsFileRead, ///< Reads from the file
  • EFsFileReadCancel, ///< -- 120 Cancels an outstanding asynchronous read request
  • EFsFileRename, ///< Renames a file
  • EFsFileReplace, ///< Replaces a file of the same name or creates a new file
  • EFsFileSeek, ///< Sets the the current file position
  • EFsFileSet, ///< Sets the file’s attributes, last modification date/time
  • EFsFileSetAtt, ///< Sets or clears file attributes
  • EFsFileSetModified, ///< Sets the date and time the file was last modified
  • EFsFileSetSize, ///< Sets the file size
  • EFsFileSize, ///< -- 40 Gets the current file size
  • EFsFileSubClose, ///< Closes the file
  • EFsFileSystemName, ///< Gets the name of the file system mounted on the specified drive
  • EFsFileTemp, ///< Creates and opens a temporary file
  • EFsFileUnLock, ///< Unlocks a region within the file
  • EFsFileWrite, ///< Writes to the file
  • EFsFileWriteDirty, ///< Writes dirty data to disk. Used when write caching enabled
  • EFsFinaliseDrive, ///< Finalise a specific drive
  • EFsFormatNext, ///< Executes the next format step
  • EFsFormatOpen, ///< Opens a device for formatting
  • EFsFormatSubClose, ///< Closes the Format subsession
  • EFsGetDriveName, ///< Gets the name of a drive
  • EFsGetLongName, ///< Gets the long filename
  • EFsGetMediaSerialNumber, ///< Gets the serial number of media
  • EFsGetNotifyUser, ///< Tests user notification of file access failure is in effect
  • EFsGetReserveAccess, ///< Get exclusive access to reserved area
  • EFsGetShortName, ///< Gets the short filename
  • EFsInitialisePropertiesFile, ///< Read in the F32 properties file provided by ESTART
  • EFsIsFileInRom, ///< Gets a pointer to the specified file, if it is in ROM
  • EFsIsFileOpen, ///< Tests whether a file is open
  • EFsIsValidName, ///< Tests whether a filename and path are syntactically correct
  • EFsListOpenFiles, ///< get a list of open files */
  • EFsLoadCodePage, ///< Loads a code page library
  • EFsLockDrive, ///< Locks a MultiMedia card in the specified drive
  • EFsMkDir, ///< Makes directory
  • EFsMountExtension, ///< Mounts the the specified extension
  • EFsMountFileSystem, ///< Mounts a file system
  • EFsMountFileSystemScan, ///< Mounts a file system and performs a scan on a drive
  • EFsMountPlugin, ///< Mounts the specified plugin
  • EFsMountProxyDrive, ///< Mounts a proxy drive
  • EFsNotificationAdd, ///< -- 140 Adds filter to the server, comprising a path and notification type
  • EFsNotificationBuffer, ///< Communicates buffer to file server
  • EFsNotificationCancel, ///< Cancels the notification request
  • EFsNotificationOpen, ///< Opens the notification
  • EFsNotificationRemove, ///< Removes filters from Server-Side
  • EFsNotificationRequest, ///< Sends the notification request
  • EFsNotificationSubClose, ///< Closes the notification
  • EFsNotifyChange, ///< Notifies file and/or directory change
  • EFsNotifyChangeCancel, ///< Cancels change notification
  • EFsNotifyChangeCancelEx, ///< Cancels all outstanding requests for notification of change
  • EFsNotifyChangeEx, ///< Requests a notification of change to files or directories
  • EFsNotifyDiskSpace, ///< -- 80 Disk space change notification
  • EFsNotifyDiskSpaceCancel, ///< Cancels a specific outstanding notification
  • EFsNotifyDismount, ///< Issues a request to asynchronously dismount the file system
  • EFsNotifyDismountCancel, ///< Cancels a request to asynchronously dismount the file system
  • EFsParse, ///< Parses a filename specification
  • EFsPluginDoCancel, ///< Cancels an synchronous plugin request
  • EFsPluginDoControl, ///< Issues a synchronous plugin request
  • EFsPluginDoRequest, ///< Issues an asynchronous plugin request
  • EFsPluginName, ///<-- 110 Gets a plugin's name in specific position and drive
  • EFsPluginOpen, ///< Opens the plugin
  • EFsPluginSubClose, ///< Closes the plugin
  • EFsPrivatePath, ///< Creates the text defining the private path
  • EFsQueryVolumeInfoExt, ///< Query interface to retrieve extended volume information
  • EFsRawDiskOpen, ///< Opens a direct access channel to the disk */
  • EFsRawDiskRead, ///< Reads directly from the disk
  • EFsRawDiskWrite, ///< Writes directly to the disk
  • EFsRawSubClose, ///< Closes the direct access channel to the disk
  • EFsReadFileSection, ///< -- 70 Reads data from a file without opening it
  • EFsRealName, ///< Gets the real name of a file
  • EFsReleaseReserveAccess, ///< Release exclusive access to reserved area
  • EFsRemountDrive, ///< Forces a remount of the specified drive
  • EFsRemoveExtension, ///< Removes the specified extension
  • EFsRemoveFileSystem, ///< Removes a file system
  • EFsRemovePlugin, ///< Removes the specified plugin
  • EFsRemoveProxyDrive, ///< Unloads a proxy drive
  • EFsRename, ///< -- 20 Renames a single file or directory
  • EFsReplace, ///< Replaces a single file with another
  • EFsReserveDriveSpace, ///< -- 100 Reserves an area of a drive
  • EFsResourceCount, ///< Gets the number of currently open resources
  • EFsResourceCountMarkEnd, ///< Ends resource count checking
  • EFsResourceCountMarkStart, ///< Marks the start of resource count checking
  • EFsRmDir, ///< Removes a directory
  • EFsScanDrive, ///< Checks the specified drive for specific errors and corrects them
  • EFsSessionPath, ///< Gets the session path
  • EFsSessionToPrivate, ///< Sets the session path to point to the private path
  • EFsSetDefaultPath, ///< Sets the system default path
  • EFsSetDriveName, ///< Sets the name of a drive
  • EFsSetEntry, ///< Sets both the attributes and the last modified date and time for a file or directory
  • EFsSetLocalDriveMapping, ///< Set the local drive mapping
  • EFsSetNotifyUser, ///< Sets if the user should be notified of file access failure
  • EFsSetSessionFlags, ///< Set/Clear session specific flags
  • EFsSetSessionPath, ///< Sets the session path for the current file server client
  • EFsSetStartupConfiguration, ///< Configures file server at startup
  • EFsSetSubst, ///< -- 10, Assigns a path to a drive letter
  • EFsSetSystemDrive, ///< Set SystemDrive
  • EFsSetVolume, ///< Sets the label for a volume
  • EFsStartupInitComplete, ///< Noifies the file server of startup initialisation completion
  • EFsSubst, ///< Gets the path assigned to a drive letter
  • EFsSwapFileSystem, ///< Swaps file systems
  • EFsSynchroniseDriveThread, ///< -- 130 Synchronises the asynchronous operation which executes in driver thread
  • EFsUnclamp, ///< Re-enable modification of a specified file in storage media
  • EFsUnlockDrive, ///< Unlocks the MultiMedia card in the specified drive
  • EFsVolume, ///< Gets volume information for a formatted device
  • EMaxClientOperations ///< This must always be the last operation insert above

Note that some of these calls can be ignored, and will be removed from this list in the future. The most needed things right now is to implemented basic and functional IPCv2

Tracking ECOM

  • SPI loader
  • ECom RSC info parser
  • Init code
  • Fix for RSC compressed (i haven't seen it built-in)
  • List Implementation and Inistantiate
  • Testings
    • ListImplementations
    • CollectImplementations (reserved for @dramikei)
    • GetImplementationCreationMethod

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.