mat~wiki

My personal wiki

vicera


/index

/prog/vicera/index

This wiki page will be dedicated to the upcoming version of the VICERA fantasy console such as it's specs, the graphics engine, the controls, etc. The new version of the VICERA will include the new vic-sm8 stack-based CPU and will have some big improvements on debugging, extensibility and development experience.

If you want to use the current version, please visit https://cutebunni.es/vicera

For now this page will only be an idea gathering, all the ideas will be moved to another page once the VICERA will start to be actually documented.

Programming

As it is a fantasy console, it is important that the programmer feels comfortable writing games for it. sm8asm will probably not be the best for that but I am thinking about creating a stack-based programming language that compiles into sm8 assembly to improve the programming comfort.

I am thinking about making something similar to Forth with an stdlib but for now I want to keep this compiler as an idea. Maybe a wiki entry will come up when the idea will become clearer in my mind.

Graphics

The GPU will lay on port 0x80 and 0x81. On start, the GPU will set up the SDL window and renderer. Then the screen refresh will be on OUT command in the port 0x80, the device will check in the memory and refresh the screen, then wait 1/60 seconds and finally return to the CPU.

The memory bindings will be similar to same than the original GPU.

Controller

The controller will lay on port 0x82. The OUT command will push into the stack a byte like it would be stored in 0xfff4 in the previous version of the VICERA. See controller.h.

Netplay

A netplay device is planned, allowing to play in multiplayer. For now the idea is not clear in my mind so more will come up here later once I have a complete idea of the netplay protocol.

Package Manager

Maybe a package manager would be great to download ROMs, IO devices, tools, etc.

I/O device programming

The programmer will be allowed to write their own devices using the Janet programming language. I picked this language because LISPs are cool and is also easily embeddable as a scripting language in C.

With this, you can write your own debugging tools, devices to interract with the VICERA. Anything! To know more about how I/O works on the vic-sm8, see vic-sm8.