110 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef GRAPHICS_H
 | 
						|
#define GRAPHICS_H
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
#include <string>
 | 
						|
#include <vector>
 | 
						|
#include <SDL.h>
 | 
						|
 | 
						|
#include "cpu.h"
 | 
						|
 | 
						|
 | 
						|
#define SCREEN_WIDTH     640
 | 
						|
#define SCREEN_HEIGHT    480
 | 
						|
#define GIGA_WIDTH       160
 | 
						|
#define GIGA_HEIGHT      120
 | 
						|
#define GIGA_VRAM        0x0800
 | 
						|
#define GIGA_VTABLE      0x0100
 | 
						|
#define FONT_BMP_WIDTH   96
 | 
						|
#define FONT_BMP_HEIGHT  48
 | 
						|
#define FONT_WIDTH       6
 | 
						|
#define FONT_HEIGHT      8
 | 
						|
#define FONT_GAP_Y       4
 | 
						|
#define FONT_CELL_Y      (FONT_HEIGHT+FONT_GAP_Y)
 | 
						|
#define MAX_CHARS_SCREEN (SCREEN_WIDTH/FONT_WIDTH)
 | 
						|
#define MAX_CHARS_HELP   80
 | 
						|
#define CHARS_PER_ROW    16
 | 
						|
#define HEX_CHARS_X      8
 | 
						|
#define HEX_CHARS_Y      32
 | 
						|
#define HEX_CHAR_WIDE    18
 | 
						|
#define MAX_SCREEN_COLS  80
 | 
						|
#define MAX_SCREEN_ROWS  48
 | 
						|
#define COLOUR_PALETTE   64
 | 
						|
#define NUM_LEDS         4
 | 
						|
#define UI_START_X       488
 | 
						|
#define UI_START_Y       0
 | 
						|
#define UI_CHARS_X       8
 | 
						|
#define UI_CHARS_Y       (SCREEN_HEIGHT/FONT_CELL_Y)
 | 
						|
#define HEX_START        30
 | 
						|
#define HEX_START_X      0
 | 
						|
#define VAR_START        96
 | 
						|
#define RAM_START        108
 | 
						|
#define CPUA_START       78
 | 
						|
#define CPUB_START       120
 | 
						|
#define WATCH_START      66
 | 
						|
#define UI_TEXT_SIZE     23
 | 
						|
#define PAGEUP_START_X   140
 | 
						|
#define PAGEUP_START_Y   48
 | 
						|
#define PAGEDN_START_X   140
 | 
						|
#define PAGEDN_START_Y   420
 | 
						|
#define DELALL_START_X   140
 | 
						|
#define DELALL_START_Y   36
 | 
						|
 | 
						|
#define GRAPHICS_CONFIG_INI  "graphics_config.ini"
 | 
						|
 | 
						|
 | 
						|
namespace Graphics
 | 
						|
{
 | 
						|
    int getWidth(void);
 | 
						|
    int getHeight(void);
 | 
						|
 | 
						|
    uint32_t* getPixels(void);
 | 
						|
    uint32_t* getColours(void);
 | 
						|
 | 
						|
    SDL_Window* getWindow(void);
 | 
						|
    SDL_Renderer* getRenderer(void);
 | 
						|
    SDL_Texture* getScreenTexture(void);
 | 
						|
    SDL_Texture* getHelpTexture(void);
 | 
						|
    SDL_Surface* getHelpSurface(void);
 | 
						|
    SDL_Surface* getFontSurface(void);
 | 
						|
 | 
						|
    void setDisplayHelpScreen(bool display);
 | 
						|
    void setWidthHeight(int width, int height);
 | 
						|
 | 
						|
    bool getUploadBarEnabled(void);
 | 
						|
    void setUploadFilename(const std::string& uploadFilename);
 | 
						|
    void enableUploadBar(bool enableUploadBar);
 | 
						|
    void updateUploadBar(float uploadPercentage);
 | 
						|
 | 
						|
    void initialise(void);
 | 
						|
 | 
						|
    void resetVTable(void);
 | 
						|
 | 
						|
    void refreshTimingPixel(const Cpu::State& S, int vgaX, int pixelY, uint32_t colour, bool debugging);
 | 
						|
    void refreshPixel(const Cpu::State& S, int vgaX, int vgaY);
 | 
						|
    void refreshScreen(void);
 | 
						|
 | 
						|
    void clearScreen(uint32_t colour);
 | 
						|
    void rectFill(int x0, int y0, int x1, int y1, uint32_t colour);
 | 
						|
 | 
						|
    void pixelReticle(const Cpu::State& S, int vgaX, int vgaY);
 | 
						|
    
 | 
						|
    void drawPixel(uint8_t x, uint8_t y, uint32_t colour);
 | 
						|
    void drawLine(int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint32_t colour);
 | 
						|
 | 
						|
    void drawLeds(void);
 | 
						|
    bool drawText(const std::string& text, int x, int y, uint32_t fgColour, bool invert, int invertSize, int invertPos=0);
 | 
						|
    bool drawMenuItem(const std::string& text, int x, int y, uint32_t fgColour, bool invert, int invertSize, uint32_t bgColour);
 | 
						|
    bool drawDialog(int16_t x, int16_t y, int16_t w, int16_t h, uint32_t bgColour, uint32_t bdColour);
 | 
						|
    bool drawDialogItem(const std::string& text, int x, int y, uint32_t fgColour, uint32_t bdColour);
 | 
						|
    bool drawText(const std::string& text, uint32_t* pixels, int x, int y, uint32_t fgColour, bool invert, int invertSize, int invertPos=0,
 | 
						|
                  uint32_t bgColour=0x00000000, bool colourKey=false, int numChars=-1, bool fullscreen=false, uint32_t commentColour=0x00000000, uint32_t sectionColour=0x00000000);
 | 
						|
    void drawDigitBox(uint8_t digit, int x, int y, uint32_t colour);
 | 
						|
 | 
						|
    void renderText(void);
 | 
						|
    void renderTextWindow(void);
 | 
						|
    void render(bool synchronise=true);
 | 
						|
}
 | 
						|
 | 
						|
#endif
 |