Here is the full list of API functions (somewhere around 80 functions!). These can (and should be) used by all games/applications running on BlackFOX architecture.
BIOS routines 32 BIOS_Version() 33 BIOS_SetVideoMode(videomode,datastart,dataend) 34 BIOS_SetGPUState(state) 35 BIOS_Delay(seconds) 36 BIOS_Idle() 37 BIOS_Unlock(unlockptr) 38 BIOS_LoadBlock(name,blockptr) 39 BIOS_SaveBlock(name,blockptr) ACPI control 40 ACPI_Restart 41 ACPI_TurnOff 42 ACPI_SetLED1(R,G,B) 43 ACPI_SetLED2(R,G,B) 44 ACPI_SetCPU1(state) 45 ACPI_ResetCPU1() 46 ACPI_SetCPU0Speed(speed) 47 ACPI_SetCPU1Speed(speed) 48 ACPI_SetWIFIAutoScan(state)
Input handling 50 Input_SetSource(source) 51 Input_ReadKey() 52 Input_GetKey() 53 Input_ClearBuffer() 54 BIOS_TerminalInit() 55 BIOS_TerminalWrite(textptr) 56 BIOS_TerminalParam(ptr) GPU driver 57 Render_Init() 58 Render_SetVideoMode(width,height) 59 Render_Begin() 60 Render_End() 61 Render_Clear(vec4) 62 Render_Rectangle(vec2,vec2) 63 Render_Circle(vec1,float) 64 Render_Line(vec2,vec2) 65 Render_OutlineRect(vec2,vec2) 66 Render_DrawPolygon(vecptr,vecn) 67 Render_DrawVertexBuffer(vecptr,vecno) 68 Render_RenderText(string) 69 Render_SetFont(float) 70 Render_SetSize(float) 71 Render_LoadMatrix(matrix) 72 Render_LoadIdentity() 73 Render_MulMatrix(dest,src) 74 Render_RotMatrix(dest,vec4 75 Render_ScaleMatrix(dest,vec4) 76 Render_TranslateMatrix(dest,vec4) 77 Render_SetColor(vec4) 78 Render_SetOffset(vec2) 79 Render_SetRotateScale(float,float) 80 Render_SetWidth(float) 81 Render_Enable(float) 82 Render_Disable(float) 83 Render_Command(....) 85 Render_SetShade(shade) WireFI driver 88 WireFI_GetDeviceByChannel(channel) 89 WireFI_GetChannelByDevice(device) 90 WireFI_GetRadioChannel(radioid,subchid) 91 WireFI_SetRadioChannel(radioid,subchid,channel) 92 WireFI_SetRadioMasterChannel(radioid,channel) 93 WireFI_SetRadioParams(radioid,subchid,) 94 WireFI_SetRadioMasterParams(radioid,sendblock,receiveblock) 95 WireFI_ScanForDevice(deviceid,radioid) 96 WireFI_SendBlock(D2Nptr,dataptr) 97 WireFI_ReceiveBlock(N2Dptr,dataptr)
Here is the final version of BlackFOX architecture specification:
== Address busses ==============================================================
ABUS0
-- Name -- Offset Size --------------------------------------------------------
ABUS1 0 524288
ABUS2 524288 3416064
================================================================================
ABUS1
-- Name -- Offset Size --------------------------------------------------------
CPU0 0 65536
CPU1 65536 65536
RAM 131072 131072
GPURAM 262144 262144
================================================================================
ABUS2
-- Name -- Offset Size --------------------------------------------------------
RESERVED 0 262144
CART 262144 1048576
ABUS3 1310720 8192
HDD 1318912 2097152
================================================================================
ABUS3
-- Name -- Offset Size --------------------------------------------------------
ACPIRAM 0 1024
SOUND 1024 1024
RAWIO 2048 1024
RESERVED 3072 5120
== ACPIRAM =====================================================================
OFFSET SIZE Description
0 8 Controller 1 [read only]
8 8 Controller 2 [read only]
16 48
64 8 Client network buffer
72 24
96 8 Server network buffer
104 24
128 128 Device list (list of device IDs on each channel)
256 16 WireFI channel 1 device control
272 16 WireFI channel 2 device control
288 16 WireFI channel 3 device control
304 16 WireFI channel 4 device control
320 192
/--512 128 ACPIINFO
| 512 Device scan control (bit 0: scan active)
| 513 Current WIFI frame
| 514 Controller scan control (bits 0/1 = controller 1/2)
| 515
| 516 Version data
| 517
| 518
| 519
| 520
| 521 Save data block name pointer (4 chars)
| 522 Save data block data pointer (8 bytes)
| 523 Save data control (bit 0: do save; bit 1: do load)
| 524 ACPI_SERIAL
\--
/--768 128 BIOSINFO
| 768 BIOS boot time (in seconds)
\--
896 128
== Standard controller interface (SCI) =========================================
[0] - Device type (1)
[1] - Axis X
[2] - Axis Y
[3] - Axis Z
[4] - Buttons (bits 0,1,2,3,4)
0 FIRE
1 A
2 B
4 START
8 PAUSE
[5] - Controller GPS X
[6] - Controller GPS Y
[7] - Controller GPS Z
== WireFI device control entry (for each subchannel) ===========================
[0] - Device channel
[1] - Control bits (0: CONSOLE-to-NETWORK; 1: NETWORK-to-CONSOLE)
[2] - CONSOLE-to-NETWORK send buffer ptr
[3] - NETWORK-to-CONSOLE receive buffer ptr
== WireFI device type format ===================================================
BITS Description
0..15 UID
1 - Universal joystick interface
2 - Fox game console
3 - WireFI Gun
4 - WireFI compatible device
16 Secondary? (yes/no)
On controllers, secondary means controller for second player
17 Invisible? (yes/no)
18..24 Reserved
== SOUND address bus format ====================================================
Channel1 [0] [8]
Channel2 [8] [8]
Channel3 [16] [8]
Channel4 [24] [8]
Channel5 [32] [8]
Channel6 [40] [8]
Channel7 [48] [8]
Channel8 [56] [8]
In each channel:
[0] - Active
[1] - Pitch
[2] - Volume
[3] - Sample
[4] - LFOType
[5] - LFORate
[6] - LFOModVol
[7] - LFOModPitch
== RAWIO =======================================================================
- 0 ----------------------------------------------------------------------------
Radio 1-4 channels [0] [4]
Radio strength [4] [4]
- 1 ----------------------------------------------------------------------------
Radio raw feeds [8] [8*4]
- 2 ----------------------------------------------------------------------------
[40] - CPU0 frequency (clamped: 5000 .. 80000)
[41] - CPU1 frequency (clamped: 5000 .. 80000)
[42] - GPURAM transfer speed
[43] - HDD read speed
[44] - Cartridge read speed
[45] -
[46] - Power state
[47] - Power button state
[48] - CPU1 power state (IN: CPU0 error)
[49] - CPU1 force reset (IN: CPU1 error)
[50] - Power R
[51] - Power G
[52] - Power B
[53] - Activity R
[54] - Activity G
[55] - Activity B
[56] - GPS X
[57] - GPS Y
[58] - GPS Z
[59] - Clock time [FIXME]
[60] - Clock date [FIXME]
[61] - ACPIRAM reset
[62] - RAM reset
[63] -
== Cartridge format ============================================================
[0] - 2 [JMP 8]
[1] - 0
[2] - 8
[3] - Cartridge size
[4] - 4607832 [FOX] (format marker)
[5] - Load flags
BIT 0: Load from RAM? (1/0)
[6] - Loader size
[7] - Offset of loader on cartridge
================================================================================
0 Responses to “BlackFOX API (final version)”