diff options
Diffstat (limited to 'src/mame/includes/chihiro.h')
-rw-r--r-- | src/mame/includes/chihiro.h | 63 |
1 files changed, 60 insertions, 3 deletions
diff --git a/src/mame/includes/chihiro.h b/src/mame/includes/chihiro.h index 73acd6ae920..896b7985f0a 100644 --- a/src/mame/includes/chihiro.h +++ b/src/mame/includes/chihiro.h @@ -70,6 +70,32 @@ struct vertex_nv { */ class vertex_program_simulator { public: + enum VectorialOperation { + VecNOP=0, + VecMOV, + VecMUL, + VecADD, + VecMAD, + VecDP3, + VecDPH, + VecDP4, + VecDST, + VecMIN, + VecMAX, + VecSLT, + VecSGE, + VecARL + }; + enum ScalarOperation { + ScaNOP=0, + ScaIMV, + ScaRCP, + ScaRCC, + ScaRSQ, + ScaEXP, + ScaLOG, + ScaLIT + }; vertex_program_simulator(); // input vertex vertex_nv *input; @@ -92,7 +118,8 @@ public: int SwizzleA[4], SignA, ParameterTypeA, TempIndexA; int SwizzleB[4], SignB, ParameterTypeB, TempIndexB; int SwizzleC[4], SignC, ParameterTypeC, TempIndexC; - int VecOperation, ScaOperation; + VectorialOperation VecOperation; + ScalarOperation ScaOperation; int OutputWriteMask, MultiplexerControl; int VecTempWriteMask, ScaTempWriteMask; int VecTempIndex, OutputIndex; @@ -190,6 +217,12 @@ public: limits_rendertarget.set(0, 0, 640, 480); pitch_rendertarget = 0; pitch_depthbuffer = 0; + height_rendertarget=0; + width_rendertarget=0; + antialiasing_rendertarget=0; + type_rendertarget=nv2a_renderer::LINEAR; + depth_rendertarget=nv2a_renderer::NV2A_RT_DEPTH_FORMAT_Z24S8; + color_rendertarget=nv2a_renderer::NV2A_COLOR_FORMAT_A8R8G8B8; rendertarget = NULL; depthbuffer = NULL; displayedtarget = NULL; @@ -247,13 +280,15 @@ public: int toggle_wait_vblank_support(); void debug_grab_texture(int type, const char *filename); void debug_grab_vertex_program_slot(int slot, UINT32 *instruction); - void start(); + void start(address_space *cpu_space); void savestate_items(); void read_vertex(address_space & space, offs_t address, vertex_nv &vertex, int attrib); - int read_vertices_0x1810(address_space & space, vertex_nv *destination, int offset, int limit); int read_vertices_0x1800(address_space & space, vertex_nv *destination, UINT32 address, int limit); + int read_vertices_0x1808(address_space & space, vertex_nv *destination, UINT32 address, int limit); + int read_vertices_0x1810(address_space & space, vertex_nv *destination, int offset, int limit); int read_vertices_0x1818(address_space & space, vertex_nv *destination, UINT32 address, int limit); void convert_vertices_poly(vertex_nv *source, vertex_t *destination, int count); + inline UINT8 *direct_access_ptr(offs_t address); TIMER_CALLBACK_MEMBER(puller_timer_work); struct { @@ -270,9 +305,16 @@ public: UINT32 ramin[0x100000 / 4]; UINT32 dma_offset[2]; UINT32 dma_size[2]; + UINT8 *basemempointer; rectangle limits_rendertarget; UINT32 pitch_rendertarget; UINT32 pitch_depthbuffer; + int height_rendertarget; + int width_rendertarget; + int antialiasing_rendertarget; + int type_rendertarget; + int depth_rendertarget; + int color_rendertarget; UINT32 *rendertarget; UINT32 *depthbuffer; UINT32 *displayedtarget; @@ -595,4 +637,19 @@ public: INCR_WRAP = 0x8507, DECR_WRAP = 0x8508 }; + enum NV2A_RT_TYPE { + LINEAR = 1, + SWIZZLED = 2 + }; + enum NV2A_RT_DEPTH_FORMAT { + NV2A_RT_DEPTH_FORMAT_Z16 = 0x0001, + NV2A_RT_DEPTH_FORMAT_Z24S8 = 0x0002 + }; + + enum NV2A_COLOR_FORMAT { + NV2A_COLOR_FORMAT_R5G6B5 = 0x0003, + NV2A_COLOR_FORMAT_X8R8G8B8 = 0x0005, + NV2A_COLOR_FORMAT_A8R8G8B8 = 0x0008, + NV2A_COLOR_FORMAT_B8 = 0x0009 + }; }; |