FANTASY CONSOLE VIRTUAL MACHINE SPEC SHEET VERSION 0.02 ##This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.## -------------------------------------------------------------------------------------------------------------------------------------------------------------- ::Memory Layout:: Fixed Clock/Update Rate: 5MHZ Memory Range: $0x00000 -> $0xFFFFF (1.048.576 Bytes) Stack Range : $0x00000 -> $0x0FFFF (64kb, Ascending Stack, starts at address 0) VRAM BackGround Range : $0x10000 -> $0x1FFFF (64kb or 256X256 with 256 possible colors) Special Register Range : $0x20000 -> $0x2FFFF (64kb or 256 clusters of 256 bytes) Static Game Data AKA Cartridge : $0x30000 -> $0xFFFFF (832KB, game byte code) -------------------------------------------------------------------------------------------------------------------------------------------------------------- ::VRAM BackGround Information:: Background VRAM is meant to be tiled/mirrored to give the illusion of infinite worlds, VRAM flags in $0x20100 control this effect. Sprite data is always stored in Game Data section of memory, never in VRAM BackGround. VRAM-BACK is more like a large dynamic sprite vs the static 16X16 sprites in game data. -------------------------------------------------------------------------------------------------------------------------------------------------------------- ::List Of Special Registers:: $0x20000 -> $0x200FF :: Screen Bounding Bottom All 256 bytes represents the bounding line offset for the bottom of the screen for each corresposnding X of (X,Y). The value 0 signifies no offset thus the bottom most pixel is the boundary line. the value 255 signifies a Y-dimensional barrier. || || || ________---|| 0,0,0,0,16,255 $0x20100 -> $0x201FF :: VRAM Flags $0x20100 = [ (1-bit unsigned)mirror-x, mirror-y, flip-x, flip-y, (4-bit signed)tile-offset ] .... $0x20200 -> $0x205FF :: Foreground Sprite Draw Order (256 total draw calls, each draw call is 4 bytes) Sprite Entry = [(1-byte unsigned) sprite ID] + [x-offset] + [y-offset] + [(1-bit unsigned)mirror-x, mirror-y, flip-x, flip-y,...]