Line 83... |
Line 83... |
`define ROM_ADDRESS_WIDTH 16
|
`define ROM_ADDRESS_WIDTH 16
|
`define ROM_ADDRESS_SEL_MASK `ROM_ADDRESS_WIDTH'h8000
|
`define ROM_ADDRESS_SEL_MASK `ROM_ADDRESS_WIDTH'h8000
|
|
|
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
//Defines the ucode memory entry point for the various ucode routines
|
//Defines the ucode memory entry point for the various ucode routines
|
|
//Please keep this syntax ENTRYPOINT_ADDR_* because the perl script that
|
|
//parses the user code expects this pattern in order to read in the tokens
|
|
|
|
//Internal Entry points (default ROM Address)
|
`define ENTRYPOINT_ADRR_INITIAL `ROM_ADDRESS_WIDTH'd0 //0 - This should always be zero
|
`define ENTRYPOINT_ADRR_INITIAL `ROM_ADDRESS_WIDTH'd0 //0 - This should always be zero
|
`define ENTRYPOINT_ADRR_CPPU `ROM_ADDRESS_WIDTH'd14 //E
|
`define ENTRYPOINT_ADRR_CPPU `ROM_ADDRESS_WIDTH'd14 //E
|
`define ENTRYPOINT_ADRR_RGU `ROM_ADDRESS_WIDTH'd17 //11
|
`define ENTRYPOINT_ADRR_RGU `ROM_ADDRESS_WIDTH'd17 //11
|
`define ENTRYPOINT_ADRR_AABBIU `ROM_ADDRESS_WIDTH'd33 //21
|
`define ENTRYPOINT_ADRR_AABBIU `ROM_ADDRESS_WIDTH'd33 //21
|
`define ENTRYPOINT_ADRR_BIU `ROM_ADDRESS_WIDTH'd121 //79
|
`define ENTRYPOINT_ADRR_BIU `ROM_ADDRESS_WIDTH'd121 //79
|
`define ENTRYPOINT_ADRR_PSU `ROM_ADDRESS_WIDTH'd196 //C4
|
`define ENTRYPOINT_ADRR_PSU `ROM_ADDRESS_WIDTH'd196 //C4
|
`define ENTRYPOINT_ADRR_PSU2 `ROM_ADDRESS_WIDTH'd212 //D4
|
`define ENTRYPOINT_ADRR_PSU2 `ROM_ADDRESS_WIDTH'd212 //D4
|
`define ENTRYPOINT_ADRR_TCC `ROM_ADDRESS_WIDTH'd154 //9A
|
`define ENTRYPOINT_ADRR_TCC `ROM_ADDRESS_WIDTH'd154 //9A
|
`define ENTRYPOINT_ADRR_DEBUG_LOG_REGISTERS `ROM_ADDRESS_WIDTH'd221 //DD
|
|
`define ENTRYPOINT_ADRR_NPG `ROM_ADDRESS_WIDTH'd24 //18
|
`define ENTRYPOINT_ADRR_NPG `ROM_ADDRESS_WIDTH'd24 //18
|
|
//User Entry points (default ROM Address)
|
|
`define ENTRYPOINT_ADRR_USERCONSTANTS `ROM_ADDRESS_WIDTH'd221 //DD
|
|
`define ENTRYPOINT_ADRR_PIXELSHADER `ROM_ADDRESS_WIDTH'd223 //DF
|
|
|
|
//Please keep this syntax ENTRYPOINT_INDEX_* because the perl script that
|
|
//parses the user code expects this pattern in order to read in the tokens
|
|
//Internal subroutines
|
`define ENTRYPOINT_INDEX_INITIAL `ROM_ADDRESS_WIDTH'h8000
|
`define ENTRYPOINT_INDEX_INITIAL `ROM_ADDRESS_WIDTH'h8000
|
`define ENTRYPOINT_INDEX_CPPU `ROM_ADDRESS_WIDTH'h8001
|
`define ENTRYPOINT_INDEX_CPPU `ROM_ADDRESS_WIDTH'h8001
|
`define ENTRYPOINT_INDEX_RGU `ROM_ADDRESS_WIDTH'h8002
|
`define ENTRYPOINT_INDEX_RGU `ROM_ADDRESS_WIDTH'h8002
|
`define ENTRYPOINT_INDEX_AABBIU `ROM_ADDRESS_WIDTH'h8003
|
`define ENTRYPOINT_INDEX_AABBIU `ROM_ADDRESS_WIDTH'h8003
|
`define ENTRYPOINT_INDEX_BIU `ROM_ADDRESS_WIDTH'h8004
|
`define ENTRYPOINT_INDEX_BIU `ROM_ADDRESS_WIDTH'h8004
|
`define ENTRYPOINT_INDEX_PSU `ROM_ADDRESS_WIDTH'h8005
|
`define ENTRYPOINT_INDEX_PSU `ROM_ADDRESS_WIDTH'h8005
|
`define ENTRYPOINT_INDEX_PSU2 `ROM_ADDRESS_WIDTH'h8006
|
`define ENTRYPOINT_INDEX_PSU2 `ROM_ADDRESS_WIDTH'h8006
|
`define ENTRYPOINT_INDEX_TCC `ROM_ADDRESS_WIDTH'h8007
|
`define ENTRYPOINT_INDEX_TCC `ROM_ADDRESS_WIDTH'h8007
|
`define ENTRYPOINT_INDEX_DEBUG_LOG_REGISTERS `ROM_ADDRESS_WIDTH'h8008
|
`define ENTRYPOINT_INDEX_NPG `ROM_ADDRESS_WIDTH'h8008
|
`define ENTRYPOINT_INDEX_NPG `ROM_ADDRESS_WIDTH'h8009
|
//User defined subroutines
|
|
`define ENTRYPOINT_INDEX_USERCONSTANTS `ROM_ADDRESS_WIDTH'h8009
|
|
`define ENTRYPOINT_INDEX_PIXELSHADER `ROM_ADDRESS_WIDTH'h800A
|
|
|
`define USER_AABBIU_UCODE_ADDRESS `ROM_ADDRESS_WIDTH'b1000000000000000
|
`define USER_AABBIU_UCODE_ADDRESS `ROM_ADDRESS_WIDTH'b1000000000000000
|
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
//This handy little macro allows me to print stuff either to STDOUT or a file.
|
//This handy little macro allows me to print stuff either to STDOUT or a file.
|
//Notice that the compilation vairable DUMP_CODE must be set if you want to print
|
//Notice that the compilation vairable DUMP_CODE must be set if you want to print
|
Line 202... |
Line 210... |
`define CREG_LAST_u `DATA_ADDRESS_WIDTH'd62 //0037
|
`define CREG_LAST_u `DATA_ADDRESS_WIDTH'd62 //0037
|
`define CREG_LAST_v `DATA_ADDRESS_WIDTH'd63 //0038
|
`define CREG_LAST_v `DATA_ADDRESS_WIDTH'd63 //0038
|
|
|
|
|
//Output registers
|
//Output registers
|
`define OREG_PIXEL_COLOR `DATA_ADDRESS_WIDTH'd57 //0032
|
`define OREG_PIXEL_COLOR `DATA_ADDRESS_WIDTH'd57
|
`define OREG_TEX_COORD1 `DATA_ADDRESS_WIDTH'd65 //0032
|
`define OREG_TEX_COORD1 `DATA_ADDRESS_WIDTH'd65
|
`define OREG_TEX_COORD2 `DATA_ADDRESS_WIDTH'd66 //0032
|
`define OREG_TEX_COORD2 `DATA_ADDRESS_WIDTH'd66
|
`define CREG_TEX_COLOR1 `DATA_ADDRESS_WIDTH'd67 //0032
|
`define CREG_TEX_COLOR1 `DATA_ADDRESS_WIDTH'd67
|
`define CREG_TEX_COLOR2 `DATA_ADDRESS_WIDTH'd68 //0032
|
`define CREG_TEX_COLOR2 `DATA_ADDRESS_WIDTH'd68
|
`define CREG_TEX_COLOR3 `DATA_ADDRESS_WIDTH'd69
|
`define CREG_TEX_COLOR3 `DATA_ADDRESS_WIDTH'd69
|
`define CREG_TEX_COLOR4 `DATA_ADDRESS_WIDTH'd70 //This is intentionally COLOR6
|
`define CREG_TEX_COLOR4 `DATA_ADDRESS_WIDTH'd70 //This is intentionally COLOR6
|
`define CREG_TEX_COLOR5 `DATA_ADDRESS_WIDTH'd71
|
`define CREG_TEX_COLOR5 `DATA_ADDRESS_WIDTH'd71
|
`define CREG_TEX_COLOR6 `DATA_ADDRESS_WIDTH'd72
|
`define CREG_TEX_COLOR6 `DATA_ADDRESS_WIDTH'd72
|
`define CREG_TEX_COLOR7 `DATA_ADDRESS_WIDTH'd73
|
`define CREG_TEX_COLOR7 `DATA_ADDRESS_WIDTH'd73
|
Line 221... |
Line 229... |
`define CREG_UV0_LAST `DATA_ADDRESS_WIDTH'd78
|
`define CREG_UV0_LAST `DATA_ADDRESS_WIDTH'd78
|
`define CREG_UV1_LAST `DATA_ADDRESS_WIDTH'd79
|
`define CREG_UV1_LAST `DATA_ADDRESS_WIDTH'd79
|
`define CREG_UV2_LAST `DATA_ADDRESS_WIDTH'd80
|
`define CREG_UV2_LAST `DATA_ADDRESS_WIDTH'd80
|
`define OREG_PIXEL_PITCH `DATA_ADDRESS_WIDTH'd81
|
`define OREG_PIXEL_PITCH `DATA_ADDRESS_WIDTH'd81
|
`define CREG_LAST_COL `DATA_ADDRESS_WIDTH'd82 //the last valid column, simply CREG_RESOLUTIONX - 1
|
`define CREG_LAST_COL `DATA_ADDRESS_WIDTH'd82 //the last valid column, simply CREG_RESOLUTIONX - 1
|
|
`define CREG_TEXTURE_COLOR `DATA_ADDRESS_WIDTH'd83
|
|
`define C1 `DATA_ADDRESS_WIDTH'd84
|
|
`define C2 `DATA_ADDRESS_WIDTH'd85
|
|
`define C3 `DATA_ADDRESS_WIDTH'd86
|
|
`define C4 `DATA_ADDRESS_WIDTH'd87
|
|
`define C5 `DATA_ADDRESS_WIDTH'd88
|
|
`define C6 `DATA_ADDRESS_WIDTH'd89
|
|
`define C7 `DATA_ADDRESS_WIDTH'd90
|
//-------------------------------------------------------------
|
//-------------------------------------------------------------
|
//*** Instruction Set ***
|
//*** Instruction Set ***
|
//The order of the instrucitons is important here!. Don't change
|
//The order of the instrucitons is important here!. Don't change
|
//it unles you know what you are doing. For example all the 'SET'
|
//it unles you know what you are doing. For example all the 'SET'
|
//family of instructions have the MSB bit in 1. This means that
|
//family of instructions have the MSB bit in 1. This means that
|