forked from kd7tck/jar
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjar_fcvm_spec_sheet_1.txt
40 lines (29 loc) · 2.34 KB
/
jar_fcvm_spec_sheet_1.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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,...]