22 #ifndef __OSYS_N64_H__ 23 #define __OSYS_N64_H__ 25 #include "common/rect.h" 26 #include "common/config-manager.h" 27 #include "common/events.h" 29 #include "backends/base-backend.h" 31 #include "base/main.h" 33 #include "graphics/surface.h" 34 #include "graphics/paletteman.h" 35 #include "graphics/pixelformat.h" 37 #include "audio/mixer_intern.h" 42 #define DEFAULT_SOUND_SAMPLE_RATE 8000 // 8 kHz 45 #define N64_PAL_FPS 25 46 #define N64_NTSC_FPS 30 48 typedef int (*TimerProc)(
int interval);
51 void vblCallback(
void);
52 void sndCallback(
void);
53 void refillAudioBuffers(
void);
56 void enableAudioPlayback(
void);
57 void disableAudioPlayback(
void);
58 void checkTimers(
void);
59 int timer_handler(
int t);
61 static volatile bool _audioEnabled =
false;
75 enum TransactionMode {
77 kTransactionActive = 1,
78 kTransactionRollback = 2
90 constexpr
VideoState() : width(0), height(0), format(),
91 graphicsMode(OVERS_NTSC_340X240) {
116 struct display_context * _dc;
120 uint16 *_offscreen_hic;
121 uint8 *_offscreen_pal;
122 uint16 *_overlayBuffer;
124 uint16 *_screenPalette;
126 #ifndef N64_EXTREME_MEMORY_SAVING 127 uint8 *_screenExactPalette;
129 uint16 _cursorPalette[256];
131 uint16 _screenWidth, _screenHeight;
132 uint16 _frameBufferWidth;
141 bool _cursorPaletteDisabled;
144 uint _cursorWidth, _cursorHeight;
148 uint16 _overlayHeight, _overlayWidth;
149 bool _overlayVisible;
152 bool _disableFpsLimit;
155 volatile int _mouseX, _mouseY;
156 volatile float _tempMouseX, _tempMouseY;
157 volatile int _mouseMaxX, _mouseMaxY;
158 int _mouseHotspotX, _mouseHotspotY;
160 int8 _controllerPort;
162 bool _controllerHasRumble;
164 bool _dirtyOffscreen;
169 uint16 _audioBufferSize;
172 uint32 _timerCallbackNext;
173 uint32 _timerCallbackTimer;
174 TimerProc _timerCallback;
199 virtual void setPalette(
const byte *colors, uint start, uint num);
200 virtual void grabPalette(byte *colors, uint start, uint num)
const;
203 virtual void copyRectToScreen(
const void *buf,
int pitch,
int x,
int y,
int w,
int h);
207 virtual void setShakePos(
int shakeXOffset,
int shakeYOffset);
214 virtual void copyRectToOverlay(
const void *buf,
int pitch,
int x,
int y,
int w,
int h);
224 virtual void setMouseCursor(
const void *buf, uint w, uint h,
int hotspotX,
int hotspotY, uint32 keycolor,
bool dontScale,
const Graphics::PixelFormat *format,
const byte *mask);
228 virtual uint32
getMillis(
bool skipRecord =
false);
237 virtual void setTimerCallback(TimerProc callback,
int interval);
240 void rebuildOffscreenGameBuffer(
void);
241 void rebuildOffscreenMouseBuffer(
void);
242 void switchGraphicModeId(
int mode);
244 void setupMixer(
void);
246 void detectControllers(
void);
247 void readControllerAnalogInput(
void);
virtual void initSize(uint width, uint height, const Graphics::PixelFormat *format)
virtual OSystem::TransactionError endGFXTransaction()
virtual Graphics::PixelFormat getOverlayFormat() const
Definition: osys_n64.h:217
virtual int16 getHeight()
virtual void grabOverlay(Graphics::Surface &surface)
virtual void beginGFXTransaction()
virtual void getTimeAndDate(TimeDate &t, bool skipRecord=false) const
Feature
Definition: system.h:414
virtual void setPalette(const byte *colors, uint start, uint num)
virtual void hideOverlay()
virtual bool hasFeature(Feature f)
TransactionMode _transactionMode
Definition: osys_n64.h:84
virtual void warpMouse(int x, int y)
virtual void unlockScreen()
virtual bool setGraphicsMode(int mode, uint flags=OSystem::kGfxModeNoFlags)
Definition: osys_n64.h:89
virtual Common::MutexInternal * createMutex(void)
virtual void setShakePos(int shakeXOffset, int shakeYOffset)
virtual int getDefaultGraphicsMode() const
Definition: mixer_intern.h:58
virtual void copyRectToScreen(const void *buf, int pitch, int x, int y, int w, int h)
virtual void updateScreen()
virtual const GraphicsMode * getSupportedGraphicsModes() const
virtual bool isOverlayVisible() const
Definition: osys_n64.h:211
VideoState _currentState
Definition: osys_n64.h:102
virtual void setMouseCursor(const void *buf, uint w, uint h, int hotspotX, int hotspotY, uint32 keycolor, bool dontScale, const Graphics::PixelFormat *format, const byte *mask)
Definition: base-backend.h:31
virtual void showOverlay(bool inGUI)
TransactionError
Definition: system.h:1177
virtual void clearOverlay()
virtual Audio::Mixer * getMixer()
VideoState _oldState
Definition: osys_n64.h:107
int _screenChangeID
Definition: osys_n64.h:112
virtual void initBackend()
virtual bool pollEvent(Common::Event &event)
virtual int getGraphicsMode() const
virtual void copyRectToOverlay(const void *buf, int pitch, int x, int y, int w, int h)
virtual void setCursorPalette(const byte *colors, uint start, uint num)
virtual PaletteManager * getPaletteManager()
Definition: osys_n64.h:196
virtual uint32 getMillis(bool skipRecord=false)
virtual int getScreenChangeID() const
virtual void logMessage(LogMessageType::Type type, const char *message)
virtual void delayMillis(uint msecs)
Definition: osys_n64.h:73
virtual Graphics::Surface * lockScreen()
Definition: paletteman.h:47
virtual int16 getOverlayWidth() const
virtual void grabPalette(byte *colors, uint start, uint num) const
virtual int16 getOverlayHeight() const
virtual bool getFeatureState(Feature f)
virtual void setFeatureState(Feature f, bool enable)
virtual bool showMouse(bool visible)