GitHub - vmartinv/nek: Nintento Entertainment Kernel: Nintendo emulator · GitHub
/" data-turbo-transient="true" />
Skip to content
Search/
Sign in<br>Sign upAppearance settings
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
vmartinv
nek
Public
Notifications<br>You must be signed in to change notification settings
Fork<br>15
Star<br>112
master
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>48 Commits<br>48 Commits
emulador
emulador
examples
examples
fdlibm
fdlibm
informe
informe
iso/boot/grub
iso/boot/grub
kernel
kernel
pcitest
pcitest
roms
roms
util
util
.compiler_flags
.compiler_flags
.gitignore
.gitignore
Doxyfile
Doxyfile
LICENSE
LICENSE
Makefile
Makefile
README.md
README.md
disk.img
disk.img
View all files
Repository files navigation
Introduction
Nintendo Entertainment Kernel is a very basic kernel with only the minimun<br>to run a NES emulator. This means that it can be run without any OS. It does not have pagging nor userspace nor any kind of protection at all. Only one program can be run. It is embedded in the kernel, which means the program's code is compiled alongside the kernel.
Screenshots
Building
You should use make and provide the cross compiler:
PATH=/path/to/crosscompiler/bin:$PATH make kernel program=emulador
If there are not errors, kernel.elf should be in the bin folder.
Examples
Besides "emulador" there are three other working programs:
mandelbrot (shows a explorable fractal)
paleta (shows nes avalaible colors)
corazon (a heart animation using math functions)
All of them can be compiled with the kernel using make.
Ej: make program=examples/mandelbrot
Installing
You may copy kernel.elf to /boot/ and add an entry at /etc/grub.d/40_custom like:
menuentry "nek" {
multiboot /boot/kernel.elf<br>module /boot/initrd.img
Remember to update the config file:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Testing
The makefile should run QEMU using the disk image disk.img. A loop device to this file must have been set up in the mount folder.
Dependencies
i686 cross compiler (both C and ASM), like GCC and nasm
GRUB2(optional): Generates .iso (cd image)
QEMU(optional): Emulation
Doxygen and Graphviz (optional): For generating the documentation
grub-mkrescue (optional): For generating a booteable cd image (.iso)
Boot call stack
GRUB (multiboot standard)
kernel/arch/x86/init/boot.s kernel_entry() at kernel/arch/x86/init/kernel_entry.c kmain() at kernel/kmain.c main() at program/main.(c|cpp) Folder Structure
kernel folder has all related to the kernel
kernel/arch code that depends on the architecture
kernel/fs file system(currently only vfs implemented)
fdlibm: a math library downloaded from internet
util/specs: Some useful documents
informe: University report (in spanish)
iso: a few files to generate an .iso with the kernel
util: contains the program to generate the initrd and a few other things
util/fuente: Tools/file used to generate the console font
About<br>Nintento Entertainment Kernel: Nintendo emulator<br>Resources<br>Readme<br>MIT license<br>Activity<br>Stars<br>112 stars<br>Watchers<br>7 watching<br>Forks<br>15 forks<br>Report repository
Releases
Packages
Used by
Contributors
Languages
You can’t perform that action at this time.