BlackFOX API (final version)

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)”


  • No Comments

Leave a Reply