A kernel that just runs a NES emulator

likemouse1 pts0 comments

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.

kernel boot grub program file util

Related Articles