PLEASE NOTE this is not a COPYRIGHT post, of any kind.
All references to "ROM" mean, the program in question that users will create FOR this fantasy emulator. We are not talking about piracy of any kind here.
This is going to probably be a train wreck (but maybe not)
I'm working on a virtual machine and here are the specs.
Up to 12 32 bit registers
0.75 MB of ROM (actually it's ram but the ROM is loaded into it)
roughly 0.8 MB of RAM to play with. (trust me it's alot it's like 812300 bytes or something)
Next we have 250 unique sprite graphics (also stored in RAM)
as well as 250 unique Tile Images.
a 512 by 512 pixel Tile Map for 16*16 pixels also stored in RAM
64 pallets or up to 1024 total colors stored at a time. (these are also in ram lol)
all of this takes up only 0.8 mb of RAM, and the 0.75 MB of ram for the ROM.
Progress:
Welp, So far I have the memory map figured out, I've proven it fits inside SmileBasic.
I have approximately 1 third of the opcodes created in concept.
I've figured out how memory access (read/write) is going to work.
It will be possible to issue a jump to an arbitrary RAM address and run it as code.
I just realized today hilariously enough that due to the way i've designed the ram you aren't technically forced to use the 0.8 MB of ram for sprite memory.. just you can.
Some notes: If you write a 32 bit value to a memory address the remaining 3 bytes will be automatically written to that address + 3 more bytes.
This makes it easy to write a 32 bit value to memory just be aware that while the registers are 32 bytes, most sprite ram etc is treated as two-byte values. This is therefore primarily an 8 bit system with 32 bit registers, and addressing.
Opcodes so far:
The longest opcode is 6 bytes long.
For an incomplete table /documentation of system opcodes look no further than..
here.
Speed:
I have no idea how fast this VM will perform.
I plan to use an optimization of some kind for sprites and tiles though (the bg layers)
and hopefully you guys won't be attempting to write directly to video pixel memory if you use this (I'm assuming it would be slow due to gpset or whatever being slow)
this is more in line with what I had hoped to achieve in SmileBasic, and if I can optimize it to be fast then that will be another step forward for me.
The next step after this would be some kind of a custom converter which can convert one type of program Ie translate, into the asm for the VM.
If I can get that to work and fit everything I like in less than 1 MB then ideally I can port some things that normally would not run in SB to SB. Natively. This likely won't be anything cool with sound... though. The graphics pipeline I designed so far is pretty primitive.
PLEASE NOTICE The VM isn't actually created in CODE yet. It just exists as a concept right now.
(But I'll post updates here and you guys can comment)
