filename | src/dream.h |
changeset | 736:a02d1475ccfd |
prev | 561:533f6b478071 |
next | 1041:5fcc39857c5c |
author | nkeynes |
date | Sat Dec 27 02:59:35 2008 +0000 (15 years ago) |
branch | lxdream-mem |
permissions | -rw-r--r-- |
last change | Replace fpscr_mask/fpscr flags in xlat_cache_block with a single xlat_sh4_mode, which tracks the field of the same name in sh4r - actually a little faster this way. Now depends on SR.MD, FPSCR.PR and FPSCR.SZ (although it doesn't benefit from the SR flag yet). Also fixed the failure to check the flags in the common case (code address returned by previous block) which took away the performance benefits, but oh well. |
file | annotate | diff | log | raw |
nkeynes@31 | 1 | /** |
nkeynes@561 | 2 | * $Id$ |
nkeynes@31 | 3 | * |
nkeynes@31 | 4 | * Miscellaneous application-wide declarations (mainly logging atm) |
nkeynes@31 | 5 | * |
nkeynes@31 | 6 | * Copyright (c) 2005 Nathan Keynes. |
nkeynes@31 | 7 | * |
nkeynes@31 | 8 | * This program is free software; you can redistribute it and/or modify |
nkeynes@31 | 9 | * it under the terms of the GNU General Public License as published by |
nkeynes@31 | 10 | * the Free Software Foundation; either version 2 of the License, or |
nkeynes@31 | 11 | * (at your option) any later version. |
nkeynes@31 | 12 | * |
nkeynes@31 | 13 | * This program is distributed in the hope that it will be useful, |
nkeynes@31 | 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
nkeynes@31 | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
nkeynes@31 | 16 | * GNU General Public License for more details. |
nkeynes@1 | 17 | */ |
nkeynes@31 | 18 | |
nkeynes@736 | 19 | #ifndef lxdream_dream_H |
nkeynes@736 | 20 | #define lxdream_dream_H 1 |
nkeynes@1 | 21 | |
nkeynes@35 | 22 | #include <stdio.h> |
nkeynes@9 | 23 | #include <stdlib.h> |
nkeynes@2 | 24 | #include <stdint.h> |
nkeynes@9 | 25 | #include <string.h> |
nkeynes@477 | 26 | #include "lxdream.h" |
nkeynes@2 | 27 | |
nkeynes@1 | 28 | #ifdef __cplusplus |
nkeynes@1 | 29 | extern "C" { |
nkeynes@1 | 30 | #endif |
nkeynes@35 | 31 | |
nkeynes@35 | 32 | /************************ Modules ********************************/ |
nkeynes@35 | 33 | /** |
nkeynes@35 | 34 | * Basic module structure defining the common operations across all |
nkeynes@35 | 35 | * modules, ie start, stop, reset, etc. |
nkeynes@35 | 36 | */ |
nkeynes@35 | 37 | typedef struct dreamcast_module { |
nkeynes@35 | 38 | char *name; |
nkeynes@35 | 39 | /** |
nkeynes@35 | 40 | * Perform all initial module setup (ie register / allocate any |
nkeynes@180 | 41 | * memory required, etc). Only called once during system startup |
nkeynes@35 | 42 | */ |
nkeynes@35 | 43 | void (*init)(); |
nkeynes@35 | 44 | /** |
nkeynes@35 | 45 | * Reset the module into it's initial system boot state. Will be called |
nkeynes@35 | 46 | * once after init(), as well as whenever the user requests a reset. |
nkeynes@35 | 47 | */ |
nkeynes@35 | 48 | void (*reset)(); |
nkeynes@35 | 49 | /** |
nkeynes@35 | 50 | * Set the module into a running state (may be NULL) |
nkeynes@35 | 51 | */ |
nkeynes@35 | 52 | void (*start)(); |
nkeynes@35 | 53 | /** |
nkeynes@35 | 54 | * Execute one time-slice worth of operations, for the given number of |
nkeynes@35 | 55 | * nanoseconds. |
nkeynes@35 | 56 | * @return Number of nanoseconds actually executed |
nkeynes@35 | 57 | */ |
nkeynes@35 | 58 | uint32_t (*run_time_slice)( uint32_t nanosecs ); |
nkeynes@35 | 59 | /** |
nkeynes@35 | 60 | * Set the module into a stopped state (may be NULL) |
nkeynes@35 | 61 | */ |
nkeynes@35 | 62 | void (*stop)(); |
nkeynes@35 | 63 | /** |
nkeynes@35 | 64 | * Save the module state to the FILE stream. May be NULL, in which case |
nkeynes@35 | 65 | * the module is considered to have no state. |
nkeynes@35 | 66 | */ |
nkeynes@35 | 67 | void (*save)(FILE *); |
nkeynes@35 | 68 | /** |
nkeynes@35 | 69 | * Load the saved module state from the FILE stream. May be NULL, in which |
nkeynes@35 | 70 | * case reset() will be called instead. |
nkeynes@35 | 71 | * @return 0 on success, nonzero on failure. |
nkeynes@35 | 72 | */ |
nkeynes@35 | 73 | int (*load)(FILE *); |
nkeynes@35 | 74 | } *dreamcast_module_t; |
nkeynes@35 | 75 | |
nkeynes@35 | 76 | void dreamcast_register_module( dreamcast_module_t ); |
nkeynes@35 | 77 | |
nkeynes@35 | 78 | extern struct dreamcast_module mem_module; |
nkeynes@35 | 79 | extern struct dreamcast_module sh4_module; |
nkeynes@35 | 80 | extern struct dreamcast_module asic_module; |
nkeynes@35 | 81 | extern struct dreamcast_module pvr2_module; |
nkeynes@35 | 82 | extern struct dreamcast_module aica_module; |
nkeynes@35 | 83 | extern struct dreamcast_module ide_module; |
nkeynes@35 | 84 | extern struct dreamcast_module maple_module; |
nkeynes@35 | 85 | extern struct dreamcast_module pvr2_module; |
nkeynes@35 | 86 | extern struct dreamcast_module gui_module; |
nkeynes@265 | 87 | extern struct dreamcast_module eventq_module; |
nkeynes@35 | 88 | extern struct dreamcast_module unknown_module; |
nkeynes@35 | 89 | |
nkeynes@422 | 90 | void fwrite_string( const char *s, FILE *f ); |
nkeynes@35 | 91 | int fread_string( char *s, int maxlen, FILE *f ); |
nkeynes@477 | 92 | void fwrite_gzip( void *p, size_t size, size_t num, FILE *f ); |
nkeynes@477 | 93 | int fread_gzip( void *p, size_t size, size_t num, FILE *f ); |
nkeynes@220 | 94 | void fwrite_dump( unsigned char *buf, unsigned int length, FILE *f ); |
nkeynes@220 | 95 | void fwrite_dump32( unsigned int *buf, unsigned int length, FILE *f ); |
nkeynes@220 | 96 | void fwrite_dump32v( unsigned int *buf, unsigned int length, int wordsPerLine, FILE *f ); |
nkeynes@35 | 97 | |
nkeynes@495 | 98 | void install_crash_handler(void); |
nkeynes@495 | 99 | |
nkeynes@477 | 100 | gboolean write_png_to_stream( FILE *f, frame_buffer_t ); |
nkeynes@477 | 101 | frame_buffer_t read_png_from_stream( FILE *f ); |
nkeynes@135 | 102 | |
nkeynes@1 | 103 | #ifdef __cplusplus |
nkeynes@1 | 104 | } |
nkeynes@1 | 105 | #endif |
nkeynes@736 | 106 | #endif /* !lxdream_dream_H */ |
.