BizHawk/waterbox/ngp/gfx.h

106 lines
3.0 KiB
C++

//---------------------------------------------------------------------------
// NEOPOP : Emulator as in Dreamland
//
// Copyright (c) 2001-2002 by neopop_uk
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version. See also the license.txt file for
// additional informations.
//---------------------------------------------------------------------------
#ifndef __NEOPOP_GFX__
#define __NEOPOP_GFX__
//=============================================================================
namespace MDFN_IEN_NGP
{
#define ZDEPTH_BACK_SPRITE 2
#define ZDEPTH_BACKGROUND_SCROLL 3
#define ZDEPTH_MIDDLE_SPRITE 4
#define ZDEPTH_FOREGROUND_SCROLL 5
#define ZDEPTH_FRONT_SPRITE 6
class NGPGFX_CLASS
{
public:
NGPGFX_CLASS()
MDFN_COLD;
~NGPGFX_CLASS() MDFN_COLD;
void write8(uint32 address, uint8 data);
void write16(uint32 address, uint16 data);
uint8 read8(uint32 address);
uint16 read16(uint32 address);
void SetLayerEnableMask(uint64 mask);
bool draw(MDFN_Surface *surface, bool skip);
bool hint(void);
void power(void);
private:
// TODO: Alignment for faster memset
uint8 zbuffer[256]; // __attribute__ ((aligned (8))); //Line z-buffer
uint16 cfb_scanline[256]; // __attribute__ ((aligned (8)));
uint8 winx, winw;
uint8 winy, winh;
uint8 scroll1x, scroll1y;
uint8 scroll2x, scroll2y;
uint8 scrollsprx, scrollspry;
uint8 planeSwap;
uint8 bgc, oowc, negative;
void reset(void);
void delayed_settings(void);
void draw_scanline_colour(int, int);
void drawColourPattern(uint8 screenx, uint16 tile, uint8 tiley, uint16 mirror,
uint16 *palette_ptr, uint8 pal, uint8 depth);
void draw_colour_scroll1(uint8 depth, int ngpc_scanline);
void draw_colour_scroll2(uint8 depth, int ngpc_scanline);
void draw_scanline_mono(int, int);
void MonoPlot(uint8 x, uint8 *palette_ptr, uint16 pal_hi, uint8 index, uint8 depth);
void drawMonoPattern(uint8 screenx, uint16 tile, uint8 tiley, uint16 mirror,
uint8 *palette_ptr, uint16 pal, uint8 depth);
void draw_mono_scroll1(uint8 depth, int ngpc_scanline);
void draw_mono_scroll2(uint8 depth, int ngpc_scanline);
uint8 ScrollVRAM[4096]; // 9000-9fff
uint8 CharacterRAM[8192]; // a000-bfff
uint8 SpriteVRAM[256]; // 8800-88ff
uint8 SpriteVRAMColor[0x40]; // 8C00-8C3F
uint8 ColorPaletteRAM[0x200]; // 8200-83ff
uint8 SPPLT[6];
uint8 SCRP1PLT[6];
uint8 SCRP2PLT[6];
uint8 raster_line;
uint8 S1SO_H, S1SO_V, S2SO_H, S2SO_V;
uint8 WBA_H, WBA_V, WSI_H, WSI_V;
bool C_OVR, BLNK;
uint8 PO_H, PO_V;
uint8 P_F;
uint8 BG_COL;
uint8 CONTROL_2D;
uint8 CONTROL_INT;
uint8 SCREEN_PERIOD;
uint8 K2GE_MODE;
uint32 ColorMap[4096];
int layer_enable_setting;
};
}
#endif